[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4K104PJZ4EN3MYZCDGSBE":3,"skill-same:01M6C4K104PJZ4EN3MYZCDGSBE":65},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":22,"commitSha":45,"skillDirectory":46,"forksCount":13,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6C4K104PJZ4EN3MYZCDGSBE","handoff",null,"Checkpoints a work session — at its close (the main use), mid-session before clearing context or switching focus, or at the end of a `\u002Fiyu:run-cycle` run. Records where things stand, migrates completed work out of the continuity docs into the history index, derives and stages the next scope, flags (not briefs) the decisions waiting on a human for `\u002Fiyu:resume` to brief when the next session opens, and commits everything it can confidently attribute (this session's work, pre-existing uncommitted leftovers, and its own doc edits) toward a clean `git status` — never pushing, and reporting rather than guessing at anything ambiguous. Produces the document a fresh session (or another person) resumes from, so nothing depends on the current conversation surviving.","iyulab\u002Fclaude-plugins","iyulab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F52388508?v=4","01M6C4JT2KEXFSG8YWSMFYT0NQ","01M6C4JT8BEJCZ0VPCC69N9JDN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fiyu\u002Fskills\u002Fhandoff\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"scope","when","hand","switching","main","continuity","clean","end","cycle","time","conversation","log","Bash","roadmap","only","up","model","never","brief","2026-11-10 10:12:30",false,"---\nname: handoff\ndescription: Checkpoints a work session — at its close (the main use), mid-session before clearing context or switching focus, or at the end of a `\u002Fiyu:run-cycle` run. Records where things stand, migrates completed work out of the continuity docs into the history index, derives and stages the next scope, flags (not briefs) the decisions waiting on a human for `\u002Fiyu:resume` to brief when the next session opens, and commits everything it can confidently attribute (this session's work, pre-existing uncommitted leftovers, and its own doc edits) toward a clean `git status` — never pushing, and reporting rather than guessing at anything ambiguous. Produces the document a fresh session (or another person) resumes from, so nothing depends on the current conversation surviving.\nwhen_to_use: User-invoked any time — \"세션 종료를 위한 정리\", \"중간 정리\", \"컨텍스트 비우기 전에 정리\", \"HANDOFF\u002FROADMAP 업데이트\", \"다음 작업범위 제안\", \"로드맵 최신화\", \"wrap up and hand off\", \"checkpoint before \u002Fclear\". Invoked by `\u002Fiyu:run-cycle` as the last step of every run. Model-invoked on its own (announce first, per Rule 7) only on a concrete signal that the session is ending — the user is closing out or the context window is nearly exhausted — or when HANDOFF.md\u002FROADMAP.md are visibly stale against what git log shows happened. Never as a substitute for asking what to do next.\nargument-hint: \"[focus or scope note]\"\nallowed-tools: Read, Glob, Grep, Write, Edit, TodoWrite, Bash\n---\n\n# Session Handoff\n\nWrite down what the next session — or this one, after its context is cleared — needs, and nothing\nelse. The output is judged by one test:\n**could someone with no access to this conversation pick up the work from these files alone?**\n\nWork this like a capable **team lead** closing out the week. `run-cycle` is the employee who\nexecutes a scope and reports back; this skill is the lead who says where the work stands and what the\nteam does next — and, for the calls that are the owner's to make, **names them** so `\u002Fiyu:resume` can\nbrief them properly when the next session actually opens (step 6).\n\n## When it runs\n\nThe output is the same in every case — a `HANDOFF.md` that stands on its own — but what surrounds it\ndiffers:\n\n| Occasion | Who starts it | What differs |\n|---|---|---|\n| **Session close** — the main use | the user, or the model on a concrete end signal (Rule 7) | nothing; this is the default below |\n| **Mid-session checkpoint** — before `\u002Fclear`, a topic switch, or when the context is getting heavy | the user | the session goes on afterwards. `## In flight` is often not \"None\" — say exactly where the work stopped. Half-done edits stay uncommitted and are named (## Commit step 3) |\n| **End of a `\u002Fiyu:run-cycle` run** | `run-cycle`, as its last step | the End-of-Run Report is already the run's chat report — read it as evidence (step 2) and keep your own chat report to a few lines pointing at `HANDOFF.md`. The run's cycles already updated `STRANDS.md` |\n\nEvery occasion ends the same way, too: once `HANDOFF.md` is written and committed, the conversation\nis no longer needed to continue. Close the report with one line saying so — the context can be\ncleared, and `\u002Fiyu:resume` picks up from `HANDOFF.md`.\n\n## Why this exists separately\n\nA session that is not a cycle run ends the way a run does: work happened, the roadmap no longer\nmatches reality, decisions are pending, and the next scope lives only in a conversation that is about\nto disappear. `\u002Fiyu:run-cycle` ends each run by invoking this skill rather than carrying its own copy\nof the closeout, so both paths produce the same `HANDOFF.md`.\n\nThis skill is that closeout, detached from the cycle machinery. It shares its definitions with\n`run-cycle` rather than restating them: **[continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md)**\nis the single source for where the documents live, what belongs in each, the hygiene pass, and how\nnext scope is derived, and\n**[release-cadence.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Frelease-cadence.md)** is the single source for\nwhere release work sits in the order. Read both first — this file only adds what is specific to\nclosing a session.\n\n**Briefing pending decisions is `\u002Fiyu:resume`'s job, not this skill's.** A briefing is analysis aimed\nat whoever resumes; produced here it would be written once at close and then sit, possibly staling,\nuntil someone acts on it. `\u002Fiyu:resume` grounds the same\ndecision in the repo as it stands the moment someone is about to act on it, and it is the one place a\ndecision gets written back the instant it is made. This skill's job stops at *naming* what is\nundecided (step 6) — cleanup and continuity-doc upkeep, nothing more.\n\n## Scope\n\n`$ARGUMENTS`, when given, narrows what to cover (a submodule, a phase, \"just the decisions\").\nWithout it, cover the whole session.\n\n## Process\n\n### 1. Resolve the continuity root\n\nPer [continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md) §1. Resolve before\nreading or writing anything. In an umbrella repo, pick the root covering the code this session\ntouched — and if the session touched several submodules, write one handoff per root rather than\nmerging them into whichever was resolved first.\n\n### 2. Reconstruct what happened — from evidence, not memory\n\nThe conversation may already be compacted, and it is not the record. Read the actual traces:\n\n- `git log` \u002F `git status` \u002F `git diff --stat` since the session started\n- The existing `HANDOFF.md` and `ROADMAP.md` — what did they claim, and is it still true?\n- The most recent `cycle-logs\u002Fcycle-*.md`, if the project runs cycles — its Carry-Forward, ledgers,\n  and Next-Cycle Scope are inherited obligations, not history. At the end of a run, also that run's\n  `RUN-SUMMARY-*.md` block: its deferred (L2) decisions feed step 6's \"Waiting on you\", and its\n  self-made (L1) decisions feed \"Decided this session\"\n- Any `\u003Croot>\u002Fissues\u002F` drafts written this session\n- `\u003Croot>\u002Fstages\u002Fstages.json` and its newest `evidence\u002F` file, if a stage contract exists\n  ([stages.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fstages.md)). Record the open stage and its progress\n  (scenarios passing x\u002Fy, latest verdict) under `## In flight`; record any `owner_decisions` still\n  `open` under `## Waiting on you` with the stage each one opens. Never copy scenario text into the\n  handoff, and never edit the contract — it is not a continuity doc.\n- The project's external inbox, if it defines one\n  ([continuity-docs.md §6](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md)) — an item that arrived\n  during the session belongs in the handoff even though nothing in git mentions it\n- The existing `## Decided this session` entries in `HANDOFF.md`, if `\u002Fiyu:resume` already recorded\n  one earlier in this same session — carry these forward as **fact**, not something to re-derive; a\n  decision `\u002Fiyu:resume` wrote back the instant it was made may leave no distinguishing git diff to\n  reconstruct it from. **An entry marked already applied is applied to `## Next` only** — a confirmed\n  reorder still has to be carried into `ROADMAP.md`'s phase order here (step 5), but do not re-apply\n  it to `## Next`, which already holds it\n\n**Unobserved data stays \"unknown\".** A handoff asserting a test passed, when no one ran it, is worse\nthan one saying \"unverified\" — the next session builds on it. If something matters and is unknown,\nsay so and name the command that would settle it.\n\n### 3. Apply the hygiene pass\n\nPer [continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md) §3, in full: migrate\nevery completed item out of `ROADMAP.md` (including pre-existing leftovers) into `HISTORY.md`\n(archiving overflow past its live window), rewrite `HANDOFF.md` to current + next only, **update**\n`STRANDS.md` (the same transition procedure `run-cycle` applies per cycle, applied here per this\nclosing session — record the unit as `session-{YYYY-MM-DD}`, counted once per the rule in §3 step 4,\nso a second handoff the same day and a handoff at the end of a run add nothing), settle the entries under\n`## 진행 중` that nothing advanced for over 14 days ([continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md) §3 step 4 f: graduate, stop with a resume condition, or\nkeep with a dated reason), then compress it (archiving overflow\npast its live window; `## 진행 중`\u002F`## 중단됨` are never archived), keep the `> History:` link —\nthen run the structural checks (continuity-docs.md §7) on the result by running the script:\n`sh \"${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fscripts\u002Fdocs-lint.sh\" \u003Croot>`. Run it again after steps 5–6\nhave written their part, before ## Commit: an error-class failure (`FAIL`, exit 1) is fixed, never\ncommitted. Its `WARN` and `UNCHECKED` lines, and any failure the rules forbid repairing, go in\n`## State of play`.\n\nThis is the step that makes the skill worth running repeatedly. The docs converge toward\nremaining-work-only on their own, without anyone scheduling a cleanup. It is also what keeps\n`STRANDS.md` accurate on the majority of sessions, which close via this skill rather than\n`run-cycle` — a session that finishes a phase graduates its strand in the same pass that\nmigrates the phase to `HISTORY.md`.\n\n### 4. Derive the next scope\n\nPer [continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md) §4 — carry-forward\ndefects, then mid-session discoveries, then emergent scope across the user \u002F developer \u002F operator\nlenses, then the backlog. Tag each candidate **autonomous-eligible** or **discussion**. When the\nfront of `ROADMAP.md` is blocked, `## Next` descends the order to the startable phases behind it\n(§4, order is not a gate) — never only its first few items.\n\nScope concretely for *one* next session, not five. Anything further out stays a phase-level\ndirection in `ROADMAP.md`. Concrete scope for sessions you cannot yet know about is the same failure\n`run-cycle` guards against with its no-cycle-numbers rule.\n\nStep 5 then decides where the *rest* sits — deriving the next item and ordering the remainder are\ndifferent jobs, and skipping the second is how a release ends up scheduled mid-phase.\n\n**`## Next` still empty after this** — carry-forward, mid-session discoveries, and the backlog all\ncame up empty. Write the **goal-gap review** (§4) as the next session's scope — one line; the\nreview itself is the next run's work, not this skill's — and name `\u002Fiyu:backlog-discover` as the\npointer for the wider, outward-looking lanes. Do\nnot generate options, a cross-lens read, or a recommendation here; that four-part briefing is\n`resume`'s job (rule 5 already reserves it for `resume`, never `handoff`). This mirrors the closing\nline `run-cycle`'s End-of-Run Report and `resume` rule 9 already carry, so all three skills\npoint the same way when the backlog runs dry.\n\n### 5. Re-order what remains\n\nDeriving *what* comes next is only half of it. The other half is **what order the rest sits in** —\nand the item that most often ends up in the wrong place is the release.\n\nApply **[release-cadence.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Frelease-cadence.md)** in full:\n\n- **§2, the placement test** — for any push\u002Fpublish\u002Frelease item in the backlog, check what remains\n  that would touch the same consumer-facing surface. Work still pending on that surface means the\n  release belongs *after* it: publishing mid-phase buys a version the next few items obsolete, and\n  every pushed pipeline spends a shared CI budget. Finished work that consumers are waiting on\n  pushes the other way. When the two genuinely conflict, that is a decision for step 6's\n  \"Waiting on you\", not one to settle here. A deferred release gets a **frozen batch** at its\n  marker — the items known now that it waits on; an existing marker's batch is kept, not re-cut.\n- **§5, a held release from a run** — when `\u002Fiyu:run-cycle`'s release review held a granted\n  release (its `Release review: held — …` line in the run's `RUN-SUMMARY-{date}.md`: batch open, no\n  receiver, or the interval not passed), write the marker into `## Next` at its boundary with the\n  batch and what held it — for the interval, the earliest date — and the act into step 6 as a\n  one-line owner-gated entry. The gate itself is placed, not asked about. That marker is the gate\n  the next run fixes at its start.\n- **§3** — follow the project's declared cadence; if there is none, infer it from tags and release\n  history and **say that you inferred it**.\n- **§4** — the outcome is an **edit to the order in `ROADMAP.md`\u002F`HANDOFF.md`**, with a one-line\n  reason at the marker (`— after Phase 3; Phase 3 changes the same CLI output`). A paragraph of\n  reasoning is advice the next session skips; a reordered list is what it reads first.\n\nThe same test applies to ordinary items when one obviously blocks another, but the release is the\nrecurring case: it is easy to add \"release\" the moment work feels done, and then it sits in the\nmiddle of a phase that will change the same surface again.\n\n**Report what moved.** A silently reordered backlog is indistinguishable from drift. And reorder\nonly — adding, dropping, or rescoping items is separate work with its own rules.\n\n### 6. Flag the decisions — name them, don't brief them\n\nTwo lists, kept apart because they behave differently:\n\n- **Waiting on a human** — irreversible or human-only **decisions**, plus anything **blocked on a\n  resource** (a credential, an access grant, an external dependency).\n- **Decided along the way** — reversible choices made during the session that carried a real\n  trade-off. Each with its alternatives, the trade-off, and a one-line **\"to correct: \u003Cthe reverse\n  action>\"**. Presenting these is what makes deciding-then-reporting safe rather than sneaky. Pure\n  taste choices are not recorded.\n\nBefore writing any \"waiting on you\" entry, run the self-unblock check: is the resource *actually*\nmissing (look, don't assume), and does a governing doc, an accepted issue, or a prior decision\nalready answer the question? An assumed blocker parks work that could have proceeded.\n\nApply **[decision-briefing.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fdecision-briefing.md) §1** for the\nentry shapes — but stop at naming, not briefing:\n\n- **Resource-blocked** entries keep their short factual form (§1): blocker · what was tried · what\n  would unblock it. This is a fact, not a decision, so it is written here in full, same as always.\n- **Decision-class** entries get **one line** — plus the two facts every entry carries (below): the\n  decision, phrased so it can be answered.\n  **Do not generate options, a cross-lens read, or a recommendation here** — that analysis is\n  `\u002Fiyu:resume`'s job, done fresh against the repo as it stands when someone is actually about to act\n  on it, rather than produced now and left to stale until then. The flag is a placeholder for\n  `\u002Fiyu:resume` to brief **and decide** — it is not a question addressed to the owner, so do not\n  phrase it as one (\"A or B?\"); name what is being chosen.\n- **An owner-gated act** (push, publish\u002Frelease, GitHub issue registration, a major-version bump)\n  whose underlying choice is already settled is **resource-blocked, not decision-class** — the owner\n  is the resource: blocker = the gate · tried = the decision (pointer to it) · unblocks = approval to\n  run the act. Do not re-flag the settled choice.\n- **An unanswered criterion request** left by `\u002Fiyu:resume` (the criterion at fault · proposed\n  revision · decision taken under it) carries over as-is. It is not a decision to re-flag, and\n  dropping it loses the one question the owner still owes.\n- **Recommendable + reversible → not here at all.** If you can already see the answer and it's\n  reversible, that is not a pending decision — decide it, proceed, and record it under **Decided\n  along the way** instead. The one-line-flag format makes it cheap to escalate; that is exactly why\n  it must not become the default for anything you could have just decided.\n- **Nothing to decide → say \"None\".** If everything remaining can be carried autonomously, that is\n  the finding, and it is a good one. Never manufacture a decision to fill the section.\n\nIf the project already uses decision IDs (`HD-01`, `D-03`, …), continue that numbering rather than\nstarting a scheme of your own.\n\n**Every entry, whatever its shape, carries two facts** — they are what lets a reader see what a\ngate holds up and how long it has stood, and neither is briefing:\n\n- **Registered** — the date the entry first appeared. A carried-forward entry keeps its original\n  date through every rewrite; resetting it hides exactly the gates that have waited longest.\n  It keeps every other field it already has, too — `\u002Fiyu:resume`'s `Default` and `Meanwhile`\n  included.\n- **Blocks** — the `## Next` \u002F `ROADMAP.md` items that cannot move until it clears, by ID or title.\n  \"Nothing\" is a valid answer and worth knowing.\n\nAn entry that clears leaves the section — `HANDOFF.md` is current state, so removal is the\nresolution, and the outcome goes where §2 of continuity-docs.md homes it. `\u002Fiyu:resume` adds\n**Default** and **Meanwhile** to the entries it leaves standing; do not write them here.\n\n## Output\n\n`\u003Croot>\u002FHANDOFF.md`, rewritten:\n\n```markdown\n# HANDOFF\n> History: [HISTORY.md](HISTORY.md)\n\n**Updated**: {YYYY-MM-DD} · **Root**: {resolved root}\n\n## In flight\n{What is half-done right now, and where exactly it stopped — the file, the step, the next command.\n\"None\" if nothing is half-done. A mid-session checkpoint is read by this same session after `\u002Fclear`,\nso this is the section that has to be exact.}\n\n## Next\n{Concrete scope for the next session — from carry-forward, discoveries, or an autonomous-eligible\nemergent candidate. Anchored to a ROADMAP phase. One session's worth.}\n\n## Waiting on you\n{\"None\" — the right answer whenever everything left can be carried autonomously — or entries in the\ntwo shapes below: the first decision-class (flagged, not briefed — `\u002Fiyu:resume` briefs and decides it), the\nsecond resource-blocked.}\n\n### {HD-01} {the decision, in one line — no options, no recommendation; `\u002Fiyu:resume` briefs and decides this next}\n- **Registered**: {YYYY-MM-DD} · **Blocks**: {item IDs, or \"nothing\"}\n\n### {HD-02} {what is blocked}\n- **Registered**: {YYYY-MM-DD} · **Blocks**: {item IDs, or \"nothing\"}\n- **Blocker**: {the missing credential \u002F access \u002F dependency}\n- **Tried**: {what was actually attempted}\n- **Unblocks**: {the specific thing you need}\n\n## Decided this session\n{Reversible self-made decisions: decision · trade-off · to correct. Or \"None\". When the project\nkeeps a decision ledger, the entry IDs and a link instead (continuity-docs.md §2).}\n\n## State of play\n{Build\u002Ftest\u002Flint status with the actual output, or explicitly \"unverified\". Branch, the **post-commit**\n`git status` (see ## Commit below) — \"clean\", or the specific files still uncommitted and why.\nStructural checks (continuity-docs.md §7): \"passed\", or each warning and unrepairable failure by code.}\n```\n\nPlus: `ROADMAP.md` with completed work removed (hygiene pass) **and its remaining phases in the\norder step 5 settled on**, and `HISTORY.md` with the completed work appended.\n\nThen report the same five sections in chat — the file is for the next session, the response is for\nthe person reading now (at the end of a run, a few lines instead: the End-of-Run Report already said\nit). End with the one-line pointer: the context can be cleared now, and `\u002Fiyu:resume` continues from\n`HANDOFF.md`. Carry the flagged decisions into the response too, exactly as one-liners; do\nnot improvise options or a recommendation in chat that step 6 deliberately left for `\u002Fiyu:resume` to\nproduce later.\n\n## Commit\n\nRun this after the docs above are in their final form — it commits them too. The goal is `git status`\nclean when the skill finishes, and that includes work this skill did not create: pre-existing\nuncommitted changes already sitting in the tree when the session started (leftover from an earlier\nsession that never got committed) are in scope, not just this session's own edits.\n\n1. **Survey everything, not just what this session touched.** `git status` \u002F `git diff --stat` —\n   include hunks that predate this session's first tool call.\n2. **Group into logical units and commit what you can confidently attribute.** Follow the project's\n   own message convention (recent `git log`); use its commit skill if one is available instead of\n   hand-rolling the message. Don't commit file-by-file, and don't fold unrelated units into one\n   commit — same anti-fragmentation bar `run-cycle` applies at its own commit boundary. This includes\n   the handoff's own edits (`HANDOFF.md`, `ROADMAP.md`, `HISTORY.md`, `STRANDS.md`, any `issues\u002F`\n   drafts written this session) as their own logical commit, typically last since it describes\n   everything before it.\n3. **Do not guess at the unclear.** A change you cannot confidently attribute — unfinished work,\n   an ambiguous partial edit, something you can't tell is safe to bundle or is even meant to be\n   committed — is not committed. Leave it as-is and report it by name (file, what's ambiguous, what\n   would resolve it) in \"State of play\" instead of folding it into a commit or a message that guesses\n   at intent. A wrong guess here is worse than an honest \"left uncommitted, because —\".\n4. **Never push, never open a PR.** Commit only. Whether the tree ends up clean or not, push and PR\n   creation stay the human's call (global git policy) — this skill's cleanliness goal is about local\n   history, not what leaves the machine.\n5. **The report carries the real result.** \"State of play\" states the actual post-commit `git status`,\n   not an aspiration — if something is still uncommitted, that is itself a finding to hand to whoever\n   reads the handoff next.\n\n## Rules\n\n1. **Remaining work only.** Completed work belongs in `HISTORY.md`. Every run enforces this, not\n   just runs where something was completed.\n2. **Evidence over assertion.** Test\u002Fbuild claims carry their output or are marked unverified.\n3. **Commit toward a clean tree, but never guess.** See ## Commit — every logical unit you can\n   confidently attribute (this session's work, pre-existing uncommitted leftovers, and the handoff's\n   own doc edits) gets committed; anything ambiguous is left alone and reported instead. Never push.\n4. **Do not implement.** If step 2 surfaces a defect, record it — fixing it starts a new session's\n   work and leaves the handoff describing a state that no longer exists.\n5. **Flag, don't brief — but only where a decision exists.** A decision-class entry leaves as one\n   line naming the choice; generating options, a cross-lens read, or a recommendation here is\n   `\u002Fiyu:resume`'s job, not this skill's. An **empty** section is a complete one: if nothing left\n   needs the human, \"None\" is the finding, not a slot to fill. And if you can already see the answer\n   *and* it is reversible, it belongs in \"Decided this session\", not here.\n6. **One root per handoff.** In an umbrella repo, several submodules touched means several handoffs,\n   each in its own root.\n7. **Model-invoked runs announce first.** When this skill starts without an explicit user invocation\n   (`\u002Fiyu:handoff`) — including when `\u002Fiyu:run-cycle` invokes it at the end of a run — say in one line\n   that a handoff is running and why, *before* touching any file —\n   the rewrite is reversible, but a silent one still surprises whoever is reading the conversation.\n8. **Point, don't brief, when `## Next` is empty.** Scope the goal-gap review as next and name\n   `\u002Fiyu:backlog-discover`; do not produce\n   options, a cross-lens read, or a recommendation — see step 4. That stays `resume`'s job.\n","# Session Handoff\n\nWrite down what the next session — or this one, after its context is cleared — needs, and nothing\nelse. The output is judged by one test:\n**could someone with no access to this conversation pick up the work from these files alone?**\n\nWork this like a capable **team lead** closing out the week. `run-cycle` is the employee who\nexecutes a scope and reports back; this skill is the lead who says where the work stands and what the\nteam does next — and, for the calls that are the owner's to make, **names them** so `\u002Fiyu:resume` can\nbrief them properly when the next session actually opens (step 6).\n\n## When it runs\n\nThe output is the same in every case — a `HANDOFF.md` that stands on its own — but what surrounds it\ndiffers:\n\n| Occasion | Who starts it | What differs |\n|---|---|---|\n| **Session close** — the main use | the user, or the model on a concrete end signal (Rule 7) | nothing; this is the default below |\n| **Mid-session checkpoint** — before `\u002Fclear`, a topic switch, or when the context is getting heavy | the user | the session goes on afterwards. `## In flight` is often not \"None\" — say exactly where the work stopped. Half-done edits stay uncommitted and are named (## Commit step 3) |\n| **End of a `\u002Fiyu:run-cycle` run** | `run-cycle`, as its last step | the End-of-Run Report is already the run's chat report — read it as evidence (step 2) and keep your own chat report to a few lines pointing at `HANDOFF.md`. The run's cycles already updated `STRANDS.md` |\n\nEvery occasion ends the same way, too: once `HANDOFF.md` is written and committed, the conversation\nis no longer needed to continue. Close the report with one line saying so — the context can be\ncleared, and `\u002Fiyu:resume` picks up from `HANDOFF.md`.\n\n## Why this exists separately\n\nA session that is not a cycle run ends the way a run does: work happened, the roadmap no longer\nmatches reality, decisions are pending, and the next scope lives only in a conversation that is about\nto disappear. `\u002Fiyu:run-cycle` ends each run by invoking this skill rather than carrying its own copy\nof the closeout, so both paths produce the same `HANDOFF.md`.\n\nThis skill is that closeout, detached from the cycle machinery. It shares its definitions with\n`run-cycle` rather than restating them: **[continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md)**\nis the single source for where the documents live, what belongs in each, the hygiene pass, and how\nnext scope is derived, and\n**[release-cadence.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Frelease-cadence.md)** is the single source for\nwhere release work sits in the order. Read both first — this file only adds what is specific to\nclosing a session.\n\n**Briefing pending decisions is `\u002Fiyu:resume`'s job, not this skill's.** A briefing is analysis aimed\nat whoever resumes; produced here it would be written once at close and then sit, possibly staling,\nuntil someone acts on it. `\u002Fiyu:resume` grounds the same\ndecision in the repo as it stands the moment someone is about to act on it, and it is the one place a\ndecision gets written back the instant it is made. This skill's job stops at *naming* what is\nundecided (step 6) — cleanup and continuity-doc upkeep, nothing more.\n\n## Scope\n\n`$ARGUMENTS`, when given, narrows what to cover (a submodule, a phase, \"just the decisions\").\nWithout it, cover the whole session.\n\n## Process\n\n### 1. Resolve the continuity root\n\nPer [continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md) §1. Resolve before\nreading or writing anything. In an umbrella repo, pick the root covering the code this session\ntouched — and if the session touched several submodules, write one handoff per root rather than\nmerging them into whichever was resolved first.\n\n### 2. Reconstruct what happened — from evidence, not memory\n\nThe conversation may already be compacted, and it is not the record. Read the actual traces:\n\n- `git log` \u002F `git status` \u002F `git diff --stat` since the session started\n- The existing `HANDOFF.md` and `ROADMAP.md` — what did they claim, and is it still true?\n- The most recent `cycle-logs\u002Fcycle-*.md`, if the project runs cycles — its Carry-Forward, ledgers,\n  and Next-Cycle Scope are inherited obligations, not history. At the end of a run, also that run's\n  `RUN-SUMMARY-*.md` block: its deferred (L2) decisions feed step 6's \"Waiting on you\", and its\n  self-made (L1) decisions feed \"Decided this session\"\n- Any `\u003Croot>\u002Fissues\u002F` drafts written this session\n- `\u003Croot>\u002Fstages\u002Fstages.json` and its newest `evidence\u002F` file, if a stage contract exists\n  ([stages.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fstages.md)). Record the open stage and its progress\n  (scenarios passing x\u002Fy, latest verdict) under `## In flight`; record any `owner_decisions` still\n  `open` under `## Waiting on you` with the stage each one opens. Never copy scenario text into the\n  handoff, and never edit the contract — it is not a continuity doc.\n- The project's external inbox, if it defines one\n  ([continuity-docs.md §6](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md)) — an item that arrived\n  during the session belongs in the handoff even though nothing in git mentions it\n- The existing `## Decided this session` entries in `HANDOFF.md`, if `\u002Fiyu:resume` already recorded\n  one earlier in this same session — carry these forward as **fact**, not something to re-derive; a\n  decision `\u002Fiyu:resume` wrote back the instant it was made may leave no distinguishing git diff to\n  reconstruct it from. **An entry marked already applied is applied to `## Next` only** — a confirmed\n  reorder still has to be carried into `ROADMAP.md`'s phase order here (step 5), but do not re-apply\n  it to `## Next`, which already holds it\n\n**Unobserved data stays \"unknown\".** A handoff asserting a test passed, when no one ran it, is worse\nthan one saying \"unverified\" — the next session builds on it. If something matters and is unknown,\nsay so and name the command that would settle it.\n\n### 3. Apply the hygiene pass\n\nPer [continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md) §3, in full: migrate\nevery completed item out of `ROADMAP.md` (including pre-existing leftovers) into `HISTORY.md`\n(archiving overflow past its live window), rewrite `HANDOFF.md` to current + next only, **update**\n`STRANDS.md` (the same transition procedure `run-cycle` applies per cycle, applied here per this\nclosing session — record the unit as `session-{YYYY-MM-DD}`, counted once per the rule in §3 step 4,\nso a second handoff the same day and a handoff at the end of a run add nothing), settle the entries under\n`## 진행 중` that nothing advanced for over 14 days ([continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md) §3 step 4 f: graduate, stop with a resume condition, or\nkeep with a dated reason), then compress it (archiving overflow\npast its live window; `## 진행 중`\u002F`## 중단됨` are never archived), keep the `> History:` link —\nthen run the structural checks (continuity-docs.md §7) on the result by running the script:\n`sh \"${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fscripts\u002Fdocs-lint.sh\" \u003Croot>`. Run it again after steps 5–6\nhave written their part, before ## Commit: an error-class failure (`FAIL`, exit 1) is fixed, never\ncommitted. Its `WARN` and `UNCHECKED` lines, and any failure the rules forbid repairing, go in\n`## State of play`.\n\nThis is the step that makes the skill worth running repeatedly. The docs converge toward\nremaining-work-only on their own, without anyone scheduling a cleanup. It is also what keeps\n`STRANDS.md` accurate on the majority of sessions, which close via this skill rather than\n`run-cycle` — a session that finishes a phase graduates its strand in the same pass that\nmigrates the phase to `HISTORY.md`.\n\n### 4. Derive the next scope\n\nPer [continuity-docs.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fcontinuity-docs.md) §4 — carry-forward\ndefects, then mid-session discoveries, then emergent scope across the user \u002F developer \u002F operator\nlenses, then the backlog. Tag each candidate **autonomous-eligible** or **discussion**. When the\nfront of `ROADMAP.md` is blocked, `## Next` descends the order to the startable phases behind it\n(§4, order is not a gate) — never only its first few items.\n\nScope concretely for *one* next session, not five. Anything further out stays a phase-level\ndirection in `ROADMAP.md`. Concrete scope for sessions you cannot yet know about is the same failure\n`run-cycle` guards against with its no-cycle-numbers rule.\n\nStep 5 then decides where the *rest* sits — deriving the next item and ordering the remainder are\ndifferent jobs, and skipping the second is how a release ends up scheduled mid-phase.\n\n**`## Next` still empty after this** — carry-forward, mid-session discoveries, and the backlog all\ncame up empty. Write the **goal-gap review** (§4) as the next session's scope — one line; the\nreview itself is the next run's work, not this skill's — and name `\u002Fiyu:backlog-discover` as the\npointer for the wider, outward-looking lanes. Do\nnot generate options, a cross-lens read, or a recommendation here; that four-part briefing is\n`resume`'s job (rule 5 already reserves it for `resume`, never `handoff`). This mirrors the closing\nline `run-cycle`'s End-of-Run Report and `resume` rule 9 already carry, so all three skills\npoint the same way when the backlog runs dry.\n\n### 5. Re-order what remains\n\nDeriving *what* comes next is only half of it. The other half is **what order the rest sits in** —\nand the item that most often ends up in the wrong place is the release.\n\nApply **[release-cadence.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Frelease-cadence.md)** in full:\n\n- **§2, the placement test** — for any push\u002Fpublish\u002Frelease item in the backlog, check what remains\n  that would touch the same consumer-facing surface. Work still pending on that surface means the\n  release belongs *after* it: publishing mid-phase buys a version the next few items obsolete, and\n  every pushed pipeline spends a shared CI budget. Finished work that consumers are waiting on\n  pushes the other way. When the two genuinely conflict, that is a decision for step 6's\n  \"Waiting on you\", not one to settle here. A deferred release gets a **frozen batch** at its\n  marker — the items known now that it waits on; an existing marker's batch is kept, not re-cut.\n- **§5, a held release from a run** — when `\u002Fiyu:run-cycle`'s release review held a granted\n  release (its `Release review: held — …` line in the run's `RUN-SUMMARY-{date}.md`: batch open, no\n  receiver, or the interval not passed), write the marker into `## Next` at its boundary with the\n  batch and what held it — for the interval, the earliest date — and the act into step 6 as a\n  one-line owner-gated entry. The gate itself is placed, not asked about. That marker is the gate\n  the next run fixes at its start.\n- **§3** — follow the project's declared cadence; if there is none, infer it from tags and release\n  history and **say that you inferred it**.\n- **§4** — the outcome is an **edit to the order in `ROADMAP.md`\u002F`HANDOFF.md`**, with a one-line\n  reason at the marker (`— after Phase 3; Phase 3 changes the same CLI output`). A paragraph of\n  reasoning is advice the next session skips; a reordered list is what it reads first.\n\nThe same test applies to ordinary items when one obviously blocks another, but the release is the\nrecurring case: it is easy to add \"release\" the moment work feels done, and then it sits in the\nmiddle of a phase that will change the same surface again.\n\n**Report what moved.** A silently reordered backlog is indistinguishable from drift. And reorder\nonly — adding, dropping, or rescoping items is separate work with its own rules.\n\n### 6. Flag the decisions — name them, don't brief them\n\nTwo lists, kept apart because they behave differently:\n\n- **Waiting on a human** — irreversible or human-only **decisions**, plus anything **blocked on a\n  resource** (a credential, an access grant, an external dependency).\n- **Decided along the way** — reversible choices made during the session that carried a real\n  trade-off. Each with its alternatives, the trade-off, and a one-line **\"to correct: \u003Cthe reverse\n  action>\"**. Presenting these is what makes deciding-then-reporting safe rather than sneaky. Pure\n  taste choices are not recorded.\n\nBefore writing any \"waiting on you\" entry, run the self-unblock check: is the resource *actually*\nmissing (look, don't assume), and does a governing doc, an accepted issue, or a prior decision\nalready answer the question? An assumed blocker parks work that could have proceeded.\n\nApply **[decision-briefing.md](${CLAUDE_SKILL_DIR}\u002F..\u002F_shared\u002Fdecision-briefing.md) §1** for the\nentry shapes — but stop at naming, not briefing:\n\n- **Resource-blocked** entries keep their short factual form (§1): blocker · what was tried · what\n  would unblock it. This is a fact, not a decision, so it is written here in full, same as always.\n- **Decision-class** entries get **one line** — plus the two facts every entry carries (below): the\n  decision, phrased so it can be answered.\n  **Do not generate options, a cross-lens read, or a recommendation here** — that analysis is\n  `\u002Fiyu:resume`'s job, done fresh against the repo as it stands when someone is actually about to act\n  on it, rather than produced now and left to stale until then. The flag is a placeholder for\n  `\u002Fiyu:resume` to brief **and decide** — it is not a question addressed to the owner, so do not\n  phrase it as one (\"A or B?\"); name what is being chosen.\n- **An owner-gated act** (push, publish\u002Frelease, GitHub issue registration, a major-version bump)\n  whose underlying choice is already settled is **resource-blocked, not decision-class** — the owner\n  is the resource: blocker = the gate · tried = the decision (pointer to it) · unblocks = approval to\n  run the act. Do not re-flag the settled choice.\n- **An unanswered criterion request** left by `\u002Fiyu:resume` (the criterion at fault · proposed\n  revision · decision taken under it) carries over as-is. It is not a decision to re-flag, and\n  dropping it loses the one question the owner still owes.\n- **Recommendable + reversible → not here at all.** If you can already see the answer and it's\n  reversible, that is not a pending decision — decide it, proceed, and record it under **Decided\n  along the way** instead. The one-line-flag format makes it cheap to escalate; that is exactly why\n  it must not become the default for anything you could have just decided.\n- **Nothing to decide → say \"None\".** If everything remaining can be carried autonomously, that is\n  the finding, and it is a good one. Never manufacture a decision to fill the section.\n\nIf the project already uses decision IDs (`HD-01`, `D-03`, …), continue that numbering rather than\nstarting a scheme of your own.\n\n**Every entry, whatever its shape, carries two facts** — they are what lets a reader see what a\ngate holds up and how long it has stood, and neither is briefing:\n\n- **Registered** — the date the entry first appeared. A carried-forward entry keeps its original\n  date through every rewrite; resetting it hides exactly the gates that have waited longest.\n  It keeps every other field it already has, too — `\u002Fiyu:resume`'s `Default` and `Meanwhile`\n  included.\n- **Blocks** — the `## Next` \u002F `ROADMAP.md` items that cannot move until it clears, by ID or title.\n  \"Nothing\" is a valid answer and worth knowing.\n\nAn entry that clears leaves the section — `HANDOFF.md` is current state, so removal is the\nresolution, and the outcome goes where §2 of continuity-docs.md homes it. `\u002Fiyu:resume` adds\n**Default** and **Meanwhile** to the entries it leaves standing; do not write them here.\n\n## Output\n\n`\u003Croot>\u002FHANDOFF.md`, rewritten:\n\n```markdown\n# HANDOFF\n> History: [HISTORY.md](HISTORY.md)\n\n**Updated**: {YYYY-MM-DD} · **Root**: {resolved root}\n\n## In flight\n{What is half-done right now, and where exactly it stopped — the file, the step, the next command.\n\"None\" if nothing is half-done. A mid-session checkpoint is read by this same session after `\u002Fclear`,\nso this is the section that has to be exact.}\n\n## Next\n{Concrete scope for the next session — from carry-forward, discoveries, or an autonomous-eligible\nemergent candidate. Anchored to a ROADMAP phase. One session's worth.}\n\n## Waiting on you\n{\"None\" — the right answer whenever everything left can be carried autonomously — or entries in the\ntwo shapes below: the first decision-class (flagged, not briefed — `\u002Fiyu:resume` briefs and decides it), the\nsecond resource-blocked.}\n\n### {HD-01} {the decision, in one line — no options, no recommendation; `\u002Fiyu:resume` briefs and decides this next}\n- **Registered**: {YYYY-MM-DD} · **Blocks**: {item IDs, or \"nothing\"}\n\n### {HD-02} {what is blocked}\n- **Registered**: {YYYY-MM-DD} · **Blocks**: {item IDs, or \"nothing\"}\n- **Blocker**: {the missing credential \u002F access \u002F dependency}\n- **Tried**: {what was actually attempted}\n- **Unblocks**: {the specific thing you need}\n\n## Decided this session\n{Reversible self-made decisions: decision · trade-off · to correct. Or \"None\". When the project\nkeeps a decision ledger, the entry IDs and a link instead (continuity-docs.md §2).}\n\n## State of play\n{Build\u002Ftest\u002Flint status with the actual output, or explicitly \"unverified\". Branch, the **post-commit**\n`git status` (see ## Commit below) — \"clean\", or the specific files still uncommitted and why.\nStructural checks (continuity-docs.md §7): \"passed\", or each warning and unrepairable failure by code.}\n```\n\nPlus: `ROADMAP.md` with completed work removed (hygiene pass) **and its remaining phases in the\norder step 5 settled on**, and `HISTORY.md` with the completed work appended.\n\nThen report the same five sections in chat — the file is for the next session, the response is for\nthe person reading now (at the end of a run, a few lines instead: the End-of-Run Report already said\nit). End with the one-line pointer: the context can be cleared now, and `\u002Fiyu:resume` continues from\n`HANDOFF.md`. Carry the flagged decisions into the response too, exactly as one-liners; do\nnot improvise options or a recommendation in chat that step 6 deliberately left for `\u002Fiyu:resume` to\nproduce later.\n\n## Commit\n\nRun this after the docs above are in their final form — it commits them too. The goal is `git status`\nclean when the skill finishes, and that includes work this skill did not create: pre-existing\nuncommitted changes already sitting in the tree when the session started (leftover from an earlier\nsession that never got committed) are in scope, not just this session's own edits.\n\n1. **Survey everything, not just what this session touched.** `git status` \u002F `git diff --stat` —\n   include hunks that predate this session's first tool call.\n2. **Group into logical units and commit what you can confidently attribute.** Follow the project's\n   own message convention (recent `git log`); use its commit skill if one is available instead of\n   hand-rolling the message. Don't commit file-by-file, and don't fold unrelated units into one\n   commit — same anti-fragmentation bar `run-cycle` applies at its own commit boundary. This includes\n   the handoff's own edits (`HANDOFF.md`, `ROADMAP.md`, `HISTORY.md`, `STRANDS.md`, any `issues\u002F`\n   drafts written this session) as their own logical commit, typically last since it describes\n   everything before it.\n3. **Do not guess at the unclear.** A change you cannot confidently attribute — unfinished work,\n   an ambiguous partial edit, something you can't tell is safe to bundle or is even meant to be\n   committed — is not committed. Leave it as-is and report it by name (file, what's ambiguous, what\n   would resolve it) in \"State of play\" instead of folding it into a commit or a message that guesses\n   at intent. A wrong guess here is worse than an honest \"left uncommitted, because —\".\n4. **Never push, never open a PR.** Commit only. Whether the tree ends up clean or not, push and PR\n   creation stay the human's call (global git policy) — this skill's cleanliness goal is about local\n   history, not what leaves the machine.\n5. **The report carries the real result.** \"State of play\" states the actual post-commit `git status`,\n   not an aspiration — if something is still uncommitted, that is itself a finding to hand to whoever\n   reads the handoff next.\n\n## Rules\n\n1. **Remaining work only.** Completed work belongs in `HISTORY.md`. Every run enforces this, not\n   just runs where something was completed.\n2. **Evidence over assertion.** Test\u002Fbuild claims carry their output or are marked unverified.\n3. **Commit toward a clean tree, but never guess.** See ## Commit — every logical unit you can\n   confidently attribute (this session's work, pre-existing uncommitted leftovers, and the handoff's\n   own doc edits) gets committed; anything ambiguous is left alone and reported instead. Never push.\n4. **Do not implement.** If step 2 surfaces a defect, record it — fixing it starts a new session's\n   work and leaves the handoff describing a state that no longer exists.\n5. **Flag, don't brief — but only where a decision exists.** A decision-class entry leaves as one\n   line naming the choice; generating options, a cross-lens read, or a recommendation here is\n   `\u002Fiyu:resume`'s job, not this skill's. An **empty** section is a complete one: if nothing left\n   needs the human, \"None\" is the finding, not a slot to fill. And if you can already see the answer\n   *and* it is reversible, it belongs in \"Decided this session\", not here.\n6. **One root per handoff.** In an umbrella repo, several submodules touched means several handoffs,\n   each in its own root.\n7. **Model-invoked runs announce first.** When this skill starts without an explicit user invocation\n   (`\u002Fiyu:handoff`) — including when `\u002Fiyu:run-cycle` invokes it at the end of a run — say in one line\n   that a handoff is running and why, *before* touching any file —\n   the rewrite is reversible, but a silent one still surprises whoever is reading the conversation.\n8. **Point, don't brief, when `## Next` is empty.** Scope the goal-gap review as next and name\n   `\u002Fiyu:backlog-discover`; do not produce\n   options, a cross-lens read, or a recommendation — see step 4. That stays `resume`'s job.\n",{"name":5,"description":7,"when_to_use":42,"allowed-tools":43,"argument-hint":44},"User-invoked any time — \"세션 종료를 위한 정리\", \"중간 정리\", \"컨텍스트 비우기 전에 정리\", \"HANDOFF\u002FROADMAP 업데이트\", \"다음 작업범위 제안\", \"로드맵 최신화\", \"wrap up and hand off\", \"checkpoint before \u002Fclear\". Invoked by `\u002Fiyu:run-cycle` as the last step of every run. Model-invoked on its own (announce first, per Rule 7) only on a concrete signal that the session is ending — the user is closing out or the context window is nearly exhausted — or when HANDOFF.md\u002FROADMAP.md are visibly stale against what git log shows happened. Never as a substitute for asking what to do next.","Read, Glob, Grep, Write, Edit, TodoWrite, Bash","[focus or scope note]","7edf5451517425157f96c10c6c52925035f73c31","plugins\u002Fiyu\u002Fskills\u002Fhandoff","https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Fiyulab","www.iyulab.com","2026-11-12 20:50:09",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add iyulab\u002Fclaude-plugins --skill handoff",{"tool":57,"command":58},"bunx","bunx skills add iyulab\u002Fclaude-plugins --skill handoff",{"tool":60,"command":61},"pnpm","pnpm dlx skills add iyulab\u002Fclaude-plugins --skill handoff","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fiyu\u002Fskills\u002Fhandoff\u002FSKILL.md",true,[],[66,89,106,125,157,178],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":37},"01M6WKK4AZHX2ERR9RW97WX0BN","drive","Pushes the open stage of a product to its agreed satisfaction bar — implement one failing scenario at a time, have an independent evaluator judge the running build, repeat until the stage passes or needs something only the owner can supply, then show the owner a demo. Use after `\u002Fiyu:charter` has a signed stage contract.","https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fiyu\u002Fskills\u002Fdrive\u002FSKILL.md",[],[68,73,74,75,27,76,77,78,79,32,80,81,30,82,83,84,85,86,87,88],"supply","running","show","failing","true","open","contract","use","stage","websearch","implement","can","task","demo","id","product",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":37},"01M6WKK02K2DQYHRR9KKY8C522","charter","Interviews the owner to set a product's goal and writes the stage contract — an ordered ladder of stages that each work on their own, with scenarios an observer can watch, a calibrated satisfaction bar, the promises each stage must keep, and every owner decision that could block it. Use before `\u002Fiyu:drive`, and again at each stage boundary.","https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fiyu\u002Fskills\u002Fcharter\u002FSKILL.md",[],[91,96,97,18,98,99,100,77,78,79,101,80,81,102,30,82,84,103,104,105],"SET","promises","re","work on","decision","observer","keep","with","work","boundary",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":37},"01M6WKJKPMSG3MPR0CZQZ9MVG1","accept","Judges the open stage by having an independent evaluator subagent drive the real, running build like a user — scenario by scenario, against the rubric — and record an evidence report and the status fields. Use to get a verdict without building anything; `\u002Fiyu:drive` dispatches the same evaluator each round.","https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fiyu\u002Fskills\u002Faccept\u002FSKILL.md",[],[108,74,113,114,115,77,78,80,81,30,116,87,117,118,119,120,121,122,123,124],"evidence","smoke","get","subagent","record","verdict","build","read","report","rubric","grep","status",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":141,"publishedAt":37},"01M6C4KKDYZE639N931JNRYZEY","telemetry-az","Analyzes Azure Application Insights telemetry since the last run to surface defects, performance regressions, and feature-drop signals, tracked run-over-run as a quality trend (error-rate\u002Fp95\u002Fissue-count direction, with closed-issue recurrence detection), plus a report-only user-analytics reading (active-user growth, feature\u002Fpage preference shifts, engagement). Triages findings against project philosophy, files issues only for threshold-crossing ones, and leads every report with a both-purpose Trend section backed by a 12-run history.","https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fiyu\u002Fskills\u002Ftelemetry-az\u002FSKILL.md",[131,136],{"categoryNo":132,"categoryName":133,"taxonomyType":134,"taxonomyTypeDesc":135},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",{"categoryNo":137,"categoryName":138,"taxonomyType":139,"taxonomyTypeDesc":140},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[142,143,144,33,145,32,30,146,147,148,149,150,151,152,153,19,154,82,155,156],"telemetry","telemetry az","performance","issues","analyze","error","app","direction","project","trending","insights","files","drop","dry","philosophy",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":37},"01M6C4KGM2AA9JXQNHB7MW8JJ1","ship","Takes finished work out — bumps the version, commits, pushes, and watches the CI run to completion, reporting what failed if it fails. Checks first whether now is the right moment — if remaining backlog work would touch the same consumer-facing surface, it says so and asks rather than publishing a version the next few items obsolete.","https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fiyu\u002Fskills\u002Fship\u002FSKILL.md",[],[159,164,165,166,167,168,32,80,169,30,170,171,172,104,173,174,175,120,176,177],"ready","push","commits","ci","publishing","version","patch","commit","publish","first","cicd","run","reporting","edit",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":37},"01M6C4KD17SZCFRPYD3Q45XKAG","run-cycle","Executes adaptive iterative development cycles — each cycle is a self-contained plan\u002Fexecute\u002Fverify\u002Freflect loop that reshapes the roadmap and derives emergent follow-on scope from its own output","https:\u002F\u002Fgithub.com\u002Fiyulab\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fiyu\u002Fskills\u002Frun-cycle\u002FSKILL.md",[],[185,175,26,186,187,188,31,30,189,190,191,120,192,177,18,82,193,194,195,196],"run cycle","development","iterative development","loop","reflect","plan","command","write","self","scripts","stop","adaptive"]