Когда это нужноWhen to reach for itКоли це потрібно
Тикет дошёл до Implemented или дальше, и нужно понять, действительно ли он готов. А также выход из BlockNeedUserTest, когда человек отметил [x] все пункты раздела ## Manual checks.A ticket has reached Implemented or later and you want to know whether it is really done. Also the way out of BlockNeedUserTest once a human has ticked every line of ## Manual checks.Тікет дійшов до Implemented або далі, і треба зрозуміти, чи він справді готовий. А також вихід із BlockNeedUserTest, коли людина відзначила [x] усі пункти розділу ## Manual checks.
Требования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Працює з
- Сделано для Claude Code; другие агенты адаптируютBuilt for Claude Code; other agents adapt itЗроблено для Claude Code; інші агенти адаптують
- Где выполняются шаги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
.claude/skills/spec-check/SKILL.md
Verified не выдаётся, пока хоть одна проверка FAIL, WARN или UNCHECKABLE, открыт ручной пункт, тактическая фаза Broken либо открытый пункт §6 не Resolved и не передан в Carried-to:. Аудит статический: без сборки и без ручных отметок, правит только Status:, ## Last Audit и проверочные теги при выходе из BlockNeedUserTest, а ## Manual checks добавляет при отсутствии.Verified is refused while any check is FAIL, WARN or UNCHECKABLE, a manual item is open, a tactical phase is Broken, or an open §6 item is neither Resolved nor in Carried-to:. The audit is static: it runs no build, ticks no manual box and edits only Status:, ## Last Audit, the verification tags on leaving BlockNeedUserTest, and appends ## Manual checks if missing.Verified не видається, поки хоч одна перевірка FAIL, WARN чи UNCHECKABLE, відкритий ручний пункт, якась тактична фаза Broken або відкритий пункт §6 не Resolved і не переданий у Carried-to:. Аудит статичний: без збірки й без ручних позначок, правит лише Status:, ## Last Audit і перевірочні теги при виході з BlockNeedUserTest, а ## Manual checks додає, якщо його немає.
ШагиStepsКроки
- Назовите тикет:
/spec-check ID-or-slug. Агент читает стратегическую спеку и прерывается, если её нет. Если у тикета есть ещё и тактическая папка, аудит охватывает стратегическую спеку и каждую фазу; сузить его можно флагами--strategic,--tacticalили--phase NN.Name the ticket:/spec-check ID-or-slug. The agent reads the strategic spec and aborts if it is missing. If the ticket also has a tactical folder, the audit covers the strategic spec and every phase;--strategic,--tacticalor--phase NNnarrow it.Назвіть тікет:/spec-check ID-or-slug. Агент читає стратегічну спеку й зупиняється, якщо її немає. Якщо в тікета є ще й тактична тека, аудит охоплює стратегічну спеку та кожну фазу; звузити його можна прапорцями--strategic,--tacticalабо--phase NN. - Агент выделяет то, что обещает спека. Из стратегической: цели (§2), ограничения (§3.2), пункты исследования (§6), текст для пользовательской документации (§8) и критерии (§11). Из тактического плана: обзор фаз, блокеры и условие завершения в
INDEX.md, а также файлы, проверки шагов и критерии готовности каждой фазы.It extracts what the spec promises. From the strategic spec: goals (§2), constraints (§3.2), research items (§6), the user-doc text (§8) and the criteria (§11). From the tactical plan: the phase overview, blockers and completion gate inINDEX.md, and each phase's files touched, step verification and done criteria.Агент виокремлює те, що обіцяє спека. Зі стратегічної: цілі (§2), обмеження (§3.2), пункти дослідження (§6), текст для користувацької документації (§8) і критерії (§11). Із тактичного плану: огляд фаз, блокери й умову завершення вINDEX.md, а також файли, перевірки кроків і критерії готовності кожної фази. - Он прогоняет проверки по файлам и записывает для каждой
PASS,WARN,FAIL,MANUAL,UNCHECKABLEилиEXEMPT: файл существует, символ объявлен (совпадение должно быть объявлением, а не комментарием), запрещённого вызова нет, пользовательская документация, открытые вопросы закрыты, ручные проверки и др. Промах grep -FAIL, иное число совпадений -WARN, недостижимый предмет проверки -UNCHECKABLE.--strictприравниваетWARNкFAIL,--quickпропускает тяжёлые grep-инварианты.It runs the checks against the files and records each asPASS,WARN,FAIL,MANUAL,UNCHECKABLEorEXEMPT: file exists, symbol declared (the hit must be a declaration, not a comment), no forbidden call, user docs, open questions closed, manual checks and more. A grep miss isFAIL; a hit count that differs from the expected one isWARN; a check that cannot reach its subject isUNCHECKABLE.--stricttreatsWARNasFAIL;--quickskips the grep-heavy invariants.Він проганяє перевірки за файлами й записує для кожноїPASS,WARN,FAIL,MANUAL,UNCHECKABLEабоEXEMPT: файл існує, символ оголошено (збіг має бути оголошенням, а не коментарем), забороненого виклику немає, користувацька документація, відкриті питання закрито, ручні перевірки та інші. Промах grep -FAIL, інша кількість збігів -WARN, недосяжний предмет перевірки -UNCHECKABLE.--strictприрівнюєWARNдоFAIL,--quickпропускає важкі grep-інваріанти. - Он ставит оценку.
Verified: все проверкиPASSилиEXEMPT, открытых ручных пунктов нет.BlockNeedUserTest: нетFAIL,WARNиUNCHECKABLE, но ручной пункт или проверка на целевой платформе открыты.Partial: нетFAILиUNCHECKABLE, есть хотя бы одинWARN.Broken: есть хотя бы одинFAILилиUNCHECKABLE, ведь проверка, не добравшаяся до предмета, ничего не доказала. Если подходит несколько оценок, побеждает худшая:Broken, затемPartial, затемBlockNeedUserTest.It scores the ticket.Verified: every check isPASSorEXEMPTand no manual item is open.BlockNeedUserTest: noFAIL,WARNorUNCHECKABLE, but a manual or on-target item is open.Partial: noFAILorUNCHECKABLE, at least oneWARN.Broken: at least oneFAILorUNCHECKABLE, since a check that could not reach its subject proved nothing. When several fit, the worst wins:Broken, thenPartial, thenBlockNeedUserTest.Він ставить оцінку.Verified: усі перевіркиPASSабоEXEMPT, відкритих ручних пунктів немає.BlockNeedUserTest: немаєFAIL,WARNіUNCHECKABLE, але ручний пункт або перевірка на цільовій платформі відкриті.Partial: немаєFAILіUNCHECKABLE, є хоча б одинWARN.Broken: є хоча б одинFAILабоUNCHECKABLE, адже перевірка, що не дісталася предмета, нічого не довела. Коли підходить кілька оцінок, перемагає найгірша:Broken, потімPartial, потімBlockNeedUserTest. - Он записывает блок
## Last Auditв конце стратегической спеки поверх прежнего, примерно в 40 строк или короче:Date,Mode,Outcome(с названием сохранённого блокирующего статуса, если он сохранён),Counts(открытые ручные пункты здесь только считаются) иAction items, каждыйFAIL,WARNилиUNCHECKABLEс конкретным исправлением или с доступом, который позволил бы выполнить проверку. ПриVerifiedиBlockNeedUserTestпунктов нет, и эта часть убирается.It writes the## Last Auditblock at the bottom of the strategic spec, over the previous one, in about 40 lines or fewer:Date,Mode,Outcome(naming the block status it kept, if any),Counts(open manual items are only counted here) and theAction items, eachFAIL,WARNorUNCHECKABLEwith a concrete fix or the access that would let the check run. WithVerifiedorBlockNeedUserTestthere are none, and that part is dropped.Він записує блок## Last Auditнаприкінці стратегічної спеки поверх попереднього, приблизно в 40 рядків або коротше:Date,Mode,Outcome(з назвою збереженого блокувального статусу, якщо він збережений),Counts(відкриті ручні пункти тут лише рахуються) іAction items, коженFAIL,WARNчиUNCHECKABLEіз конкретним виправленням або з доступом, що дозволив би виконати перевірку. ЗаVerifiedіBlockNeedUserTestпунктів немає, і ця частина прибирається. - Если критерий из §11 требует человека или настоящего запуска, а раздела
## Manual checksв спеке ещё нет (обычно его уже написал/spec-dev), агент добавляет его с пунктом[ ]на каждый такой критерий. Существующий раздел он не переписывает, отметок не снимает и сам не ставит. Отметку[x], дату и то, что вы увидели, добавляете вы. ДляVerifiedвсе пункты должны быть отмечены, либо раздела нет совсем.If a §11 criterion needs a human or a real run and the spec has no## Manual checkssection yet (usually/spec-devhas already written it), it appends one with a[ ]line per such criterion. It never rewrites an existing section, never unticks a box and never ticks one. You tick[x]and add the date and what you saw.Verifiedneeds every line ticked, or no section at all.Якщо критерій із §11 потребує людини чи справжнього запуску, а розділу## Manual checksу спеці ще немає (зазвичай його вже написав/spec-dev), агент додає його з пунктом[ ]на кожен такий критерій. Наявний розділ він не переписує, позначок не знімає й сам не ставить. Позначку[x], дату й те, що ви побачили, додаєте ви. ДляVerifiedусі пункти мають бути позначені, або розділу немає взагалі. - Он выставляет строку
Status:по оценке (в полном и стратегическом режиме; запуск только по тактике обновляет лишьINDEX.mdи проверенные строки фаз). СтатусBlockQuestionsилиBlockExternalостаётся вместе с заметкой после-, если оценка неVerified; оценка записывается в## Last Audit. При выходе изBlockNeedUserTestон удаляет все проверочные теги, начинающиеся с идентификатора тикета, и добавляет эти файлы в запись журнала изменений тикета, если журнал в проекте ведётся.It sets theStatus:line to the score (in full or strategic mode; a tactical-only run updates justINDEX.mdand the audited phase rows). ABlockQuestionsorBlockExternalstatus stays, note after-included, unless the score isVerified; the score goes into## Last Audit. LeavingBlockNeedUserTest, it deletes every verification tag that starts with the ticket id and adds those files to the ticket's changelog entry, where the project keeps one.Він виставляє рядокStatus:за оцінкою (у повному й стратегічному режимі; запуск лише за тактикою оновлює тількиINDEX.mdі перевірені рядки фаз). СтатусBlockQuestionsабоBlockExternalлишається разом із приміткою після-, якщо оцінка неVerified; оцінка записується в## Last Audit. При виході зBlockNeedUserTestвін видаляє всі перевірочні теги, що починаються з ідентифікатора тікета, і додає ці файли до запису журналу змін тікета, якщо проєкт веде такий журнал. - Если статус, выставленный в этом прогоне, -
PartialилиBroken, он сам передаёт ход/spec-fix. НаVerifiedостанавливается. НаBlockNeedUserTestостанавливается и ждёт сигнала от человека: дальше не идёт и теги не удаляет. На сохранённыхBlockQuestionsилиBlockExternalтоже останавливается: механического больше нечего пробовать. Когда пункт закрыт, запустите/spec-checkснова.If the status this run set isPartialorBroken, it chains to/spec-fixon its own. OnVerifiedit stops. OnBlockNeedUserTestit stops and waits for the human signal: it does not chain and does not remove the tags. On a keptBlockQuestionsorBlockExternalit stops too, since nothing mechanical is left to try. Once the item is closed, run/spec-checkagain.Якщо статус, виставлений у цьому прогоні, -PartialабоBroken, він сам передає хід/spec-fix. НаVerifiedзупиняється. НаBlockNeedUserTestзупиняється й чекає сигналу від людини: далі не йде й теги не видаляє. На збереженихBlockQuestionsабоBlockExternalтеж зупиняється: механічного вже нічого пробувати. Коли пункт закрито, запустіть/spec-checkзнову.
В строке Status: стоит Verified, BlockNeedUserTest, Partial или Broken (либо прежние BlockQuestions / BlockExternal), блок ## Last Audit перечисляет, что осталось, а в чате одна строка: ID: score. PASS/WARN/FAIL: N/N/N. Tags removed: N. Top issues: [list].The Status: line reads Verified, BlockNeedUserTest, Partial or Broken (or still the BlockQuestions / BlockExternal it had), the ## Last Audit block lists what is left, and the chat shows one line: ID: score. PASS/WARN/FAIL: N/N/N. Tags removed: N. Top issues: [list].У рядку Status: стоїть Verified, BlockNeedUserTest, Partial або Broken (чи колишні BlockQuestions / BlockExternal), блок ## Last Audit перелічує, що лишилося, а в чаті один рядок: ID: score. PASS/WARN/FAIL: N/N/N. Tags removed: N. Top issues: [list].
СоветыTipsПоради
- Проверка открытых вопросов срабатывает, только когда аудит действительно меняет статус. Повторный аудит уже
Verifiedтикета её не повторяет, аArchivedтикет не проверяется вовсе. У примитивной спеки такого раздела нет, и онаEXEMPT; пункт с оставшейся шаблонной строкойOpen / Resolvedсчитается без ответа, а раздел ищется по тексту заголовка, не по номеру.The open-questions check runs only when the audit actually changes the status. Re-auditing an alreadyVerifiedticket does not repeat it, and anArchivedticket is never gated. A primitive spec has no such section and isEXEMPT; an item that still carries the template's literalOpen / Resolvedline counts as unanswered, and the section is found by its heading text, not its number.Перевірка відкритих питань спрацьовує, лише коли аудит справді змінює статус. Повторний аудит ужеVerifiedтікета її не повторює, аArchivedтікет не перевіряється взагалі. У примітивної спеки такого розділу немає, і вонаEXEMPT; пункт із шаблонним рядкомOpen / Resolved, що лишився, вважається без відповіді, а розділ шукають за текстом заголовка, не за номером. - Прежде чем назвать артефакт без ссылок балластом, аудит смотрит в папку планов: это могут быть заготовки другого активного тикета. Каждый найденный остаток -
WARN, и он удерживает тикет наPartial.Before calling an artifact with zero references dead weight, the audit looks in the plan directory: it may be scaffolding of another active ticket. Each remnant it does find is aWARN, which keeps the ticket atPartial.Перш ніж назвати артефакт без посилань баластом, аудит дивиться в теку планів: це можуть бути заготовки іншого активного тікета. Кожен знайдений залишок -WARN, і він утримує тікет наPartial. - Три проверки читают то, что видит читатель: формулы сообщений (ошибка говорит, что случилось, и один следующий шаг), одно имя на понятие и проход по персонам (persona pass): каждый новый путь глазами каждого вида читателя. Каждая даёт
WARNза промах; деструктивное действие, до которого можно дойти мимо подтверждения, -FAIL. На тикете, который читатель не видит, все триEXEMPT.Three checks read what a reader sees: message formulas (an error says what happened and one next step), one name per concept, and a persona pass that traces each new path as each kind of reader. Each gives aWARNper miss; a destructive action reachable past its confirmation is aFAIL. All three areEXEMPTon a ticket no reader can see.Три перевірки читають те, що бачить читач: формули повідомлень (помилка каже, що сталося, і один наступний крок), одна назва на поняття та прохід за персонами (persona pass): кожен новий шлях очима кожного виду читача. Кожна даєWARNза промах; руйнівна дія, до якої можна дійти повз підтвердження, -FAIL. На тікеті, якого читач не бачить, усі триEXEMPT. - Аудит никогда не правит пользовательские поверхности. Видимое пользователю изменение запускает /surfaces в фазе docs-cleanup плана, и именно там пишется пользовательская документация. Проверка
User docsлишь ищет ключевое слово, которое обещает §8 спеки, иEXEMPT, если в §8 сказаноNo changes. См. поверхность.The audit never edits a user surface. A user-visible change runs /surfaces in the plan's docs-cleanup phase, and that is where the user docs get written. TheUser docscheck only looks for the keyword that §8 of the spec promises, and isEXEMPTwhen §8 saysNo changes. See surface.Аудит ніколи не правит користувацькі поверхні. Видима користувачеві зміна запускає /surfaces у фазі docs-cleanup плану, і саме там пишеться користувацька документація. ПеревіркаUser docsлише шукає ключове слово, яке обіцяє §8 спеки, іEXEMPT, якщо в §8 сказаноNo changes. Див. поверхню. ## Manual checksпишется один раз и больше не трогается: блок## Last Auditпереписывается при каждом запуске, и отметка, оставленная в нём, была бы стёрта тем самым повторным аудитом, который должен её прочитать. Доказательство может дать /prove, а отметку ставит человек.## Manual checksis written once and left alone because the## Last Auditblock is rewritten on every run, so a box kept there would be wiped by the very re-audit meant to read it. /prove can supply the evidence; the tick stays with the human.## Manual checksпишеться один раз і далі не чіпається: блок## Last Auditпереписується за кожного запуску, і позначку, залишену в ньому, стер би той самий повторний аудит, що мав її прочитати. Доказ може дати /prove, а позначку ставить людина.- Пункты в блоке - это ровно то, с чем работает /spec-fix: каждый называет упавшую проверку и конкретное исправление. Пункт
UNCHECKABLEникогда не бывает механическим: не хватает доступа, а не правки.The action items in the block are exactly what /spec-fix works from: each one names a failing check and a concrete fix. AnUNCHECKABLEitem is never mechanical, because what is missing is access, not an edit.Пункти в блоці - це саме те, з чим працює /spec-fix: кожен називає провалену перевірку й конкретне виправлення. ПунктUNCHECKABLEніколи не буває механічним: бракує доступу, а не правки.
Связанные функцииRelated functionsПов'язані функції
- Закрыть механические замечания аудита и перепроверить тикетClose the mechanical audit findings and re-audit the ticketЗакрити механічні зауваження аудиту й перевірити тікет зновуВыполняет пункты аудита, не требующие решений, остальные оставляет вам и, если что-то сдвинулось, возвращает тикет в /spec-check за новым вердиктом.Applies the audit action items that need no decision, lists the rest for you, and hands the ticket back to /spec-check for a fresh verdict once something moved.Виконує пункти аудиту, що не потребують рішень, решту лишає вам і, якщо щось зрушило, повертає тікет до /spec-check по новий вердикт.
- Выполнить тактический план по одному проверенному шагу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іде за планом крок за кроком, перевіряє кожен крок до позначки про готовність і жорстко зупиняється на першому збої чи неоднозначності, не вгадуючи. - Обновить все места, где пользователь встречает изменение, под одним именемUpdate every place a user meets a change, under one nameОновити всі місця, де користувач зустрічає зміну, під одним іменем
/surfacesперечисляет все места, где пользователь встречает изменение, до правок, затем выравнивает каждое затронутое под одним именем в каждой авторской локали./surfaceslists every place a user meets a change before any edit, then makes each touched one say the same thing, under one name, in every authored locale./surfacesперелічує всі місця, де користувач зустрічає зміну, до правок, потім вирівнює кожне зачеплене під одним іменем у кожній авторській локалі. - Провести тикет по жизненному циклу с проверкой на каждом шагеMove a ticket through the lifecycle with a gate at every stepПровести тікет життєвим циклом із перевіркою на кожному кроціТикет - это один Markdown-файл со строкой статуса. Каждый навык требует входной статус и выдаёт выходной, поэтому этап нельзя пропустить на глаз.A ticket is one Markdown file with a status line. Each skill requires an entry status and produces an exit status, so no stage is skipped on a hunch.Тікет - це один Markdown-файл із рядком статусу. Кожна навичка вимагає вхідний статус і видає вихідний, тож етап не можна пропустити на око.
- Запустить изменение и проверить, что оно правда работаетRun a change and see whether it actually worksЗапустити зміну й перевірити, що вона справді працюєЗапустить и посмотреть: проверка заканчивается одной строкой, PASS, DEFECT, COULD NOT VERIFY или NOT APPLICABLE, с путём к свидетельствам.Run the thing and observe it: the check ends in one line, PASS, DEFECT, COULD NOT VERIFY or NOT APPLICABLE, with the path to its evidence.Запустити й подивитися: перевірка закінчується одним рядком, PASS, DEFECT, COULD NOT VERIFY або NOT APPLICABLE, зі шляхом до свідчень.