[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M72WCS4GPRSH73CZR81JB6EP":3,"skill-same:01M72WCS4GPRSH73CZR81JB6EP":47},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M72WCS4GPRSH73CZR81JB6EP","status",null,"The dossier driver + read-only sit-rep. Default session-open action. Invoke when the user says \"ds:status\", \"ds\", \"dossier status\", \"where are we\", \"sit-rep\", \"what's next\", \"check dossier\", or session-start before any other ds:* verb.","raisedadead\u002Fclaude-code-plugins","raisedadead","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1884376?v=4","01M72WC4WYRJGZ2CXMCSF7B6VG","Mrugesh Mohapatra","01M72WC4XJTNHQ0D89QPG2H0W4",3,"ISC","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fdossier\u002Fskills\u002Fstatus\u002FSKILL.md",[],[],"2026-11-10 22:39:42",false,"---\nname: status\ndescription: The dossier driver + read-only sit-rep. Default session-open action. Invoke when the user says \"ds:status\", \"ds\", \"dossier status\", \"where are we\", \"sit-rep\", \"what's next\", \"check dossier\", or session-start before any other ds:* verb.\n---\n\n# ds:status — the dossier driver (sit-rep)\n\nRead-only on files; mutations route through Bash helpers. The sit-rep writes only the INDEX regen and the TaskList hydration; pause and resume (step 1a) write the ledger on request. Step 6 lists both.\n\n## Steps\n\n### 1. Locate\n\n- `\u003Croot>\u002F.scratchpad\u002FINDEX.md`, where `\u003Croot>` is the path `ds root` prints — missing → run `ds regen-index` to build it.\n- Enumerate ALL rows with `state=live`. Current dossier = the first (most-recent). `state=paused` rows are listed separately, outside the live set.\n- The paused set reaches the report as its own `PAUSED` line in step 5, printed on every full sit-rep — `(none)` when the set is empty. The LIGHT path exits at step 1 and never reaches it, which is correct: LIGHT runs where there is no `.scratchpad\u002Fdossier\u002F` to hold a paused wave. A paused wave that no line names is a wave nobody decides about.\n\nNo `.scratchpad\u002Fdossier\u002F` in cwd → LIGHT sit-rep, the small-work path with no ceremony:\n\n- `git status -sb` + `git log --oneline -${DS_LIGHT_LOG:-5}` for working state (skip git cleanly outside a repo).\n- `$DS_HEALTH_CMD` when set: run it and fold its output in (the operator wires a repo\u002Frig health check; unset stays portable).\n- One block: `LIGHT (no dossier): \u003Cbranch> · \u003Cahead\u002Fbehind> · \u003CN> dirty · last: \u003Csubject>`, then suggest `ds:new \"\u003Cgoal>\"` when the work meets the start rule: it spans more than one session, touches more than 5 files, or needs an operator step.\n\nExit 0 after the light sit-rep.\n\n### 1a. Consolidation check\n\nWarn (advisory, never blocking) when the tree needs tidying:\n\n- **>1 live dossier** (Vm.12): print a CONSOLIDATE block listing each live slug and its §S-tail age, then suggest picking the current one and **pausing** or **closing** the rest.\n- **stale-live** (Vm.13): any live dossier whose last §S entry is older than `${DS_STALE_LIVE_DAYS:-14}` days → suggest pause or `ds:close --abandon`.\n- **drift** (Vm.15): an INDEX carrying a `\u003C!-- drift:N slugs:... -->` trailer (any dossier rendered `drift!` — header\u002Flocation\u002F§Z disagreement, the sealed-zombie class) gets a DRIFT block naming each drift slug and its likely cause, then a route: a `§Z`-closed drift auto-heals on the next SessionStart (session-start runs `ds reconcile`); anything else is operator-resolved — finish the close (rerun `ds close \u003Cwave>`) or correct the header through `ds header-state`, which is the supported writer (the dossier mod's header guard denies a non-canonical token written any other way). Run `cli\u002Fds ds-check .scratchpad` for the deterministic list.\n\nds:status suggests; the operator — or the model on explicit request — performs one of the actions below.\n\n**Pause \u002F resume \u002F abandon (operator actions, atomic):**\n\n| Action           | Mechanism                                                                                                                                    |\n| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |\n| pause `\u003Cslug>`   | `ds header-state \u003Cdir> paused` + `ds s-append \u003Cdir> \"ds:pause — paused reason=\u003Cr>\"` + regen INDEX                                            |\n| resume `\u003Cslug>`  | `ds header-state \u003Cdir> live` + `ds s-append \u003Cdir> \"ds:resume — resumed\"` + regen INDEX, then re-run step 3 so any mid-build START resurfaces |\n| abandon `\u003Cslug>` | `ds:close --abandon \"\u003Creason>\"`                                                                                                              |\n\nPause and resume each write ONE atomic §S line (no START\u002FDONE pairing — ${CLAUDE_PLUGIN_ROOT}\u002FFORMAT.md §16). Pausing works mid-build and leaves §T alone.\n\n### 2. Read\n\nParse from DOSSIER.md:\n\n- §S — tail 30 lines.\n- §T — full table.\n- §X — full table.\n- §B — count + open rows (no `fix cite`).\n\n### 2a. Hydrate TaskList (§T → TaskList projection)\n\n§T is source of truth; the Claude Code TaskList is a derived steering surface the operator watches. Idempotent — safe every invocation.\n\nSkip this step when the session has no `TaskList` tool. Claude Code provides the Task tools by default only on older models; `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` turns them on for the rest ([task tool availability](https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Ftools-reference#task-tool-availability)).\n\n1. `TaskList` first. Parse the leading `T\u003Cid>` token of each existing task's subject (the join key).\n1. Each §T row in `{., ~}` whose `T\u003Cid>` is absent: `TaskCreate` subject=`\"\u003CT-id> \u003Ctask>\"`, description = task + `verify` cell, activeForm derived from the task.\n1. `TaskUpdate` each to its glyph: `.`→pending, `~`→in_progress. Already-`x` rows stay out — no steering value, pure clutter.\n1. **`!` and `?` rows stay out too** — TaskList has no \"blocked-on-human\" status. They surface as BLOCKERS in the report, where the autonomous loop leaves them alone. A `who=H` row is projected but reported under NEEDS YOU: it is takeable, just not by the agent. When a goal is active and only `who=H` rows remain, the report says the goal cannot pass them and names `\u002Fgoal clear`.\n1. Dependencies: `blockedBy` is the row's own `needs` cell, mapped id to task. Read, never inferred — the rule this replaces derived it from phase order, so every task in a phase waited on the whole phase before it whether or not it depended on any of it.\n\n**The reverse direction is advisory:** a TaskList task marked `completed` whose §T row is not `x` gets a WARN (`run ds:build \u003CT-id> --resume to finalize cite+flip`). The flip itself belongs to `ds:build`, which produces the commit cite Vm.3 requires.\n\n### 3. Detect incomplete ops (resume hint)\n\nScan §S for `START` lines with no matching `DONE` for the same `\u003Ctarget>`. Each is an incomplete op. For each:\n\n- Identify the last step from §S (last line with a matching target).\n- Map step → next action via FORMAT.md §16 resume protocol.\n- Suggest the exact command: `ds:build T\u003CN> --resume` \u002F `ds:backprop B\u003CN> --resume` \u002F etc.\n\n### 4. Detect stale §X (optional warning)\n\nFor each §X row run `git status -sb` + `git rev-list --count` and compare against the recorded values. A difference flags `§X stale (refresh via ds:build or ds:check)`. Refreshing is a write op and belongs to those verbs.\n\n### 5. Report (decision-first)\n\nLead with the progress line, then the ONE decision. Run `\"${CLAUDE_PLUGIN_ROOT}\"\u002Fcli\u002Fds progress \u003Cdir> --line` and `\"${CLAUDE_PLUGIN_ROOT}\"\u002Fcli\u002Fds ds-check .scratchpad`, and print their lines as they come. A bracketed line prints only when its condition holds.\n\n```\n\u003Cslug> 47% · 9\u002F19 · next T3                    # ds progress --line, verbatim\nDECISION: \u003Cthe one thing the operator must decide, or \"NONE → proceeding\">\n  └ \u003Cwhy a human is needed \u002F what unblocks if NONE>\n[BLOCKED: T5 rolling-restart — needs ops review]       # state=!\u002F? rows\nJUST DID: \u003Clast 1–2 §S cite-bearing entries>\nNEXT:                                                   # then each line of `ds handoff \u003Cdir>`, verbatim: the \u002Fgoal and\n  \u003Cds handoff line>                                     # \u002Fdossier:build --auto lines, or operator:\u002Fanswer:\u002Fclose:\n[⚠ §X stale \u003CNm> → confirm before flip]                 # step 4\n[DRIFT: \u003Cadvisory line>]                                # each ds ds-check advisory\n[LATER: \u003Clater: line>, \u003Cdue: lines>]                    # carried-work lines of `ds progress` with no dir; `ds later` lists them\n[CONSOLIDATE: \u003CN> live — pause\u002Fclose the stale ones]    # >1 live (step 1a)\nPAUSED (\u003CN>): \u003Cslug> · \u003CT done\u002Ftot> · idle \u003CNd>         # every state=paused row (step 1); \"(none)\" when empty\n[⚠ resume: ds:build T\u003CN> --resume]                      # incomplete op (step 3)\n[Locks: \u003Cslug>: \u003Cskill> pid \u003Cpid> since \u003Ctime>]\n```\n\n`--full` adds the `ds progress \u003Cdir>` table, the complete §T + §X tables and the §S tail.\n\n### 6. What writes, and when\n\nThe **sit-rep path — steps 1 through 5, which is every plain `ds:status`** — writes exactly two things, both derived and idempotent:\n\n- INDEX regen (atomic, derived)\n- Stale-lock cleanup (the session-start hook already does this; re-running is safe)\n\nIt appends no §S. Reading the ledger should not leave a mark on it.\n\nThe **pause \u002F resume actions in step 1a are outside that path** and are not read-only. Each runs only on an explicit operator request, and each mutates the ledger: `ds s-append` appends one §S line, `ds header-state` rewrites the header state token in place (`` `live` `` → `` `paused` ``). Invoking one turns that invocation into a write; the sit-rep by itself never becomes one.\n\n### 7. `--recover` mode\n\n`ds:status --recover` reconstructs context after a crash, compaction, or handoff. Try sources IN ORDER and name which fired:\n\n1. **transcripts** — grep `~\u002F.claude\u002Fprojects\u002F\u003Cproject>\u002F*.jsonl` from the last `${DS_RECOVER_DAYS:-3}` days for the most recent non-sidechain user turns plus the last assistant summary. Header `## Recovered (transcripts)`.\n1. Fold the normal sit-rep (steps 1–5) underneath.\n\nAlways end with `recovery source: transcripts | none`. Worst case is `none`.\n\n## Exit codes\n\n- 0 for the sit-rep path — a missing INDEX, repo or §X row is reported, not raised.\n- A step-1a pause\u002Fresume helper can exit non-zero on its own: `ds header-state` and `ds s-append` each print `ds \u003Cverb>: not found: \u003Cpath>\u002FDOSSIER.md` and exit 1 against a directory holding no ledger. Surface that instead of reporting the sit-rep clean.\n\n## Cite\n\n- FORMAT.md §13 (INDEX format), §16 (resume protocol)\n","# ds:status — the dossier driver (sit-rep)\n\nRead-only on files; mutations route through Bash helpers. The sit-rep writes only the INDEX regen and the TaskList hydration; pause and resume (step 1a) write the ledger on request. Step 6 lists both.\n\n## Steps\n\n### 1. Locate\n\n- `\u003Croot>\u002F.scratchpad\u002FINDEX.md`, where `\u003Croot>` is the path `ds root` prints — missing → run `ds regen-index` to build it.\n- Enumerate ALL rows with `state=live`. Current dossier = the first (most-recent). `state=paused` rows are listed separately, outside the live set.\n- The paused set reaches the report as its own `PAUSED` line in step 5, printed on every full sit-rep — `(none)` when the set is empty. The LIGHT path exits at step 1 and never reaches it, which is correct: LIGHT runs where there is no `.scratchpad\u002Fdossier\u002F` to hold a paused wave. A paused wave that no line names is a wave nobody decides about.\n\nNo `.scratchpad\u002Fdossier\u002F` in cwd → LIGHT sit-rep, the small-work path with no ceremony:\n\n- `git status -sb` + `git log --oneline -${DS_LIGHT_LOG:-5}` for working state (skip git cleanly outside a repo).\n- `$DS_HEALTH_CMD` when set: run it and fold its output in (the operator wires a repo\u002Frig health check; unset stays portable).\n- One block: `LIGHT (no dossier): \u003Cbranch> · \u003Cahead\u002Fbehind> · \u003CN> dirty · last: \u003Csubject>`, then suggest `ds:new \"\u003Cgoal>\"` when the work meets the start rule: it spans more than one session, touches more than 5 files, or needs an operator step.\n\nExit 0 after the light sit-rep.\n\n### 1a. Consolidation check\n\nWarn (advisory, never blocking) when the tree needs tidying:\n\n- **>1 live dossier** (Vm.12): print a CONSOLIDATE block listing each live slug and its §S-tail age, then suggest picking the current one and **pausing** or **closing** the rest.\n- **stale-live** (Vm.13): any live dossier whose last §S entry is older than `${DS_STALE_LIVE_DAYS:-14}` days → suggest pause or `ds:close --abandon`.\n- **drift** (Vm.15): an INDEX carrying a `\u003C!-- drift:N slugs:... -->` trailer (any dossier rendered `drift!` — header\u002Flocation\u002F§Z disagreement, the sealed-zombie class) gets a DRIFT block naming each drift slug and its likely cause, then a route: a `§Z`-closed drift auto-heals on the next SessionStart (session-start runs `ds reconcile`); anything else is operator-resolved — finish the close (rerun `ds close \u003Cwave>`) or correct the header through `ds header-state`, which is the supported writer (the dossier mod's header guard denies a non-canonical token written any other way). Run `cli\u002Fds ds-check .scratchpad` for the deterministic list.\n\nds:status suggests; the operator — or the model on explicit request — performs one of the actions below.\n\n**Pause \u002F resume \u002F abandon (operator actions, atomic):**\n\n| Action           | Mechanism                                                                                                                                    |\n| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |\n| pause `\u003Cslug>`   | `ds header-state \u003Cdir> paused` + `ds s-append \u003Cdir> \"ds:pause — paused reason=\u003Cr>\"` + regen INDEX                                            |\n| resume `\u003Cslug>`  | `ds header-state \u003Cdir> live` + `ds s-append \u003Cdir> \"ds:resume — resumed\"` + regen INDEX, then re-run step 3 so any mid-build START resurfaces |\n| abandon `\u003Cslug>` | `ds:close --abandon \"\u003Creason>\"`                                                                                                              |\n\nPause and resume each write ONE atomic §S line (no START\u002FDONE pairing — ${CLAUDE_PLUGIN_ROOT}\u002FFORMAT.md §16). Pausing works mid-build and leaves §T alone.\n\n### 2. Read\n\nParse from DOSSIER.md:\n\n- §S — tail 30 lines.\n- §T — full table.\n- §X — full table.\n- §B — count + open rows (no `fix cite`).\n\n### 2a. Hydrate TaskList (§T → TaskList projection)\n\n§T is source of truth; the Claude Code TaskList is a derived steering surface the operator watches. Idempotent — safe every invocation.\n\nSkip this step when the session has no `TaskList` tool. Claude Code provides the Task tools by default only on older models; `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` turns them on for the rest ([task tool availability](https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Ftools-reference#task-tool-availability)).\n\n1. `TaskList` first. Parse the leading `T\u003Cid>` token of each existing task's subject (the join key).\n1. Each §T row in `{., ~}` whose `T\u003Cid>` is absent: `TaskCreate` subject=`\"\u003CT-id> \u003Ctask>\"`, description = task + `verify` cell, activeForm derived from the task.\n1. `TaskUpdate` each to its glyph: `.`→pending, `~`→in_progress. Already-`x` rows stay out — no steering value, pure clutter.\n1. **`!` and `?` rows stay out too** — TaskList has no \"blocked-on-human\" status. They surface as BLOCKERS in the report, where the autonomous loop leaves them alone. A `who=H` row is projected but reported under NEEDS YOU: it is takeable, just not by the agent. When a goal is active and only `who=H` rows remain, the report says the goal cannot pass them and names `\u002Fgoal clear`.\n1. Dependencies: `blockedBy` is the row's own `needs` cell, mapped id to task. Read, never inferred — the rule this replaces derived it from phase order, so every task in a phase waited on the whole phase before it whether or not it depended on any of it.\n\n**The reverse direction is advisory:** a TaskList task marked `completed` whose §T row is not `x` gets a WARN (`run ds:build \u003CT-id> --resume to finalize cite+flip`). The flip itself belongs to `ds:build`, which produces the commit cite Vm.3 requires.\n\n### 3. Detect incomplete ops (resume hint)\n\nScan §S for `START` lines with no matching `DONE` for the same `\u003Ctarget>`. Each is an incomplete op. For each:\n\n- Identify the last step from §S (last line with a matching target).\n- Map step → next action via FORMAT.md §16 resume protocol.\n- Suggest the exact command: `ds:build T\u003CN> --resume` \u002F `ds:backprop B\u003CN> --resume` \u002F etc.\n\n### 4. Detect stale §X (optional warning)\n\nFor each §X row run `git status -sb` + `git rev-list --count` and compare against the recorded values. A difference flags `§X stale (refresh via ds:build or ds:check)`. Refreshing is a write op and belongs to those verbs.\n\n### 5. Report (decision-first)\n\nLead with the progress line, then the ONE decision. Run `\"${CLAUDE_PLUGIN_ROOT}\"\u002Fcli\u002Fds progress \u003Cdir> --line` and `\"${CLAUDE_PLUGIN_ROOT}\"\u002Fcli\u002Fds ds-check .scratchpad`, and print their lines as they come. A bracketed line prints only when its condition holds.\n\n```\n\u003Cslug> 47% · 9\u002F19 · next T3                    # ds progress --line, verbatim\nDECISION: \u003Cthe one thing the operator must decide, or \"NONE → proceeding\">\n  └ \u003Cwhy a human is needed \u002F what unblocks if NONE>\n[BLOCKED: T5 rolling-restart — needs ops review]       # state=!\u002F? rows\nJUST DID: \u003Clast 1–2 §S cite-bearing entries>\nNEXT:                                                   # then each line of `ds handoff \u003Cdir>`, verbatim: the \u002Fgoal and\n  \u003Cds handoff line>                                     # \u002Fdossier:build --auto lines, or operator:\u002Fanswer:\u002Fclose:\n[⚠ §X stale \u003CNm> → confirm before flip]                 # step 4\n[DRIFT: \u003Cadvisory line>]                                # each ds ds-check advisory\n[LATER: \u003Clater: line>, \u003Cdue: lines>]                    # carried-work lines of `ds progress` with no dir; `ds later` lists them\n[CONSOLIDATE: \u003CN> live — pause\u002Fclose the stale ones]    # >1 live (step 1a)\nPAUSED (\u003CN>): \u003Cslug> · \u003CT done\u002Ftot> · idle \u003CNd>         # every state=paused row (step 1); \"(none)\" when empty\n[⚠ resume: ds:build T\u003CN> --resume]                      # incomplete op (step 3)\n[Locks: \u003Cslug>: \u003Cskill> pid \u003Cpid> since \u003Ctime>]\n```\n\n`--full` adds the `ds progress \u003Cdir>` table, the complete §T + §X tables and the §S tail.\n\n### 6. What writes, and when\n\nThe **sit-rep path — steps 1 through 5, which is every plain `ds:status`** — writes exactly two things, both derived and idempotent:\n\n- INDEX regen (atomic, derived)\n- Stale-lock cleanup (the session-start hook already does this; re-running is safe)\n\nIt appends no §S. Reading the ledger should not leave a mark on it.\n\nThe **pause \u002F resume actions in step 1a are outside that path** and are not read-only. Each runs only on an explicit operator request, and each mutates the ledger: `ds s-append` appends one §S line, `ds header-state` rewrites the header state token in place (`` `live` `` → `` `paused` ``). Invoking one turns that invocation into a write; the sit-rep by itself never becomes one.\n\n### 7. `--recover` mode\n\n`ds:status --recover` reconstructs context after a crash, compaction, or handoff. Try sources IN ORDER and name which fired:\n\n1. **transcripts** — grep `~\u002F.claude\u002Fprojects\u002F\u003Cproject>\u002F*.jsonl` from the last `${DS_RECOVER_DAYS:-3}` days for the most recent non-sidechain user turns plus the last assistant summary. Header `## Recovered (transcripts)`.\n1. Fold the normal sit-rep (steps 1–5) underneath.\n\nAlways end with `recovery source: transcripts | none`. Worst case is `none`.\n\n## Exit codes\n\n- 0 for the sit-rep path — a missing INDEX, repo or §X row is reported, not raised.\n- A step-1a pause\u002Fresume helper can exit non-zero on its own: `ds header-state` and `ds s-append` each print `ds \u003Cverb>: not found: \u003Cpath>\u002FDOSSIER.md` and exit 1 against a directory holding no ledger. Surface that instead of reporting the sit-rep clean.\n\n## Cite\n\n- FORMAT.md §13 (INDEX format), §16 (resume protocol)\n",{"name":5,"description":7},"main","cc36ccdbea6f51d75171834269d4c944ea22fbe1","plugins\u002Fdossier\u002Fskills\u002Fstatus",0,"https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins","https:\u002F\u002Fgithub.com\u002Fraisedadead","https:\u002F\u002Fmrugesh.dev","dad • dev\u002F\u002Fops • open-source","2026-11-12 02:38:04",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add raisedadead\u002Fclaude-code-plugins --skill status",{"tool":39,"command":40},"bunx","bunx skills add raisedadead\u002Fclaude-code-plugins --skill status",{"tool":42,"command":43},"pnpm","pnpm dlx skills add raisedadead\u002Fclaude-code-plugins --skill status","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fdossier\u002Fskills\u002Fstatus\u002FSKILL.md",true,[],[48,55],{"skillNo":49,"name":50,"nameZh":6,"description":51,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":54,"publishedAt":19},"01M72WDTPH32KAB6KEJ77CESPP","skill-smith","Lint and structure-check a SKILL.md — frontmatter, line budget, trigger clause, reference depth. Use when the user asks to write a new skill, review this skill, lint a SKILL.md, check skill frontmatter, or after editing any file under a skills\u002F*\u002FSKILL.md path.","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Fskill-smith\u002FSKILL.md",[],[],{"skillNo":56,"name":57,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M72WCPES9DCSYA53FGHN2JHE","new","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fdossier\u002Fskills\u002Fnew\u002FSKILL.md",[],[]]