[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BTYQ2DPDT4ZDMD52GJVEJ":3,"skill-same:01M69BTYQ2DPDT4ZDMD52GJVEJ":82},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M69BTYQ2DPDT4ZDMD52GJVEJ","shadow-frog",null,"Use a shadow knowledge base to understand any codebase. The .shadow\u002F directory mirrors the source tree with markdown files containing behavioral insights — known bugs, edge cases, implicit contracts, and user preferences. Always check the shadow before editing, debugging, or investigating code. When the user shares important context, write it to the shadow immediately. Invoke shadow-frog-init to create it, shadow-frog-update to refresh it, shadow-frog-dream for autonomous experiments, shadow-frog-nap for lightweight feature-task ideation, shadow-frog-meditate for shadow hygiene, or shadow-frog-viewer for user-facing browsing and visualization.","microsoft\u002FShadowFrog","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BTFDNCFRDGPJVWET4C0RN",33,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"Shadow","shadow frog","markdown","meditate","insights","knowledge base","files","autonomous","write","knowledge","dream","directory","code","visualization","update","create","debugging","nap","init","experiments","2026-11-10 10:12:30",false,"---\nname: shadow-frog\ndescription: >-\n  Use a shadow knowledge base to understand any codebase. The .shadow\u002F\n  directory mirrors the source tree with markdown files containing\n  behavioral insights — known bugs, edge cases, implicit contracts,\n  and user preferences. Always check the shadow before editing,\n  debugging, or investigating code. When the user shares important\n  context, write it to the shadow immediately. Invoke shadow-frog-init\n  to create it, shadow-frog-update to refresh it, shadow-frog-dream\n  for autonomous experiments, shadow-frog-nap for lightweight feature-task\n  ideation, shadow-frog-meditate for shadow hygiene,\n  or shadow-frog-viewer for user-facing browsing and visualization.\nscripts:\n  - shadow-cite.py\n---\n\n# ShadowFrog\n\n`.shadow\u002F` mirrors the source tree. Each source file has a `.md` shadow organized\nby symbol. Each symbol section contains discoveries — behavioral insights anchored\nto that code location.\n\n## Required Actions\n\n**Every time you work on code in a repo with `.shadow\u002F`:**\n\n1. **Read `_prefs.md` first** — it contains project-wide conventions,\n   user preferences, and things to avoid.\n2. **Read relevant `_cross\u002F` discoveries** — list `_cross\u002F` and read entries\n   whose titles relate to the current area, including cross-file contracts\n   and interactions.\n3. **Check `_dreams\u002F_index.md`** and read relevant experiment reports,\n   especially when investigating bugs or unfamiliar code. They may contain\n   findings not yet distilled into per-file shadows.\n4. **Before editing a file**, read its shadow (`.shadow\u002F\u003Cpath>.md`) and\n   relevant `_cross\u002F` entries, then apply the discoveries.\n   `_index.md` counts may be stale; inspect the actual shadows and `_cross\u002F`.\n5. **When the user explains something about code** (gotcha, design intent,\n   warning, history): write a `source: user` discovery to the shadow\n   immediately. Resolve its `file::symbol` anchor from `_index.md`, shadows,\n   and session context; do not ask where to put it.\n6. **When the user states a preference or convention** (not tied to any\n   specific file): write it to `_prefs.md` immediately.\n7. **After code changes**: run `\u002Fshadow-frog-update`\n\n## Record Revisited Knowledge\n\nContinue navigating directly to shadow files and symbol headings. Each\ndiscovery or preference has one visible `citation_score`: a nonnegative integer,\ninitially 0. Missing scores also mean 0. It is approximate, agent-reported\nrevisit frequency, not confidence or proof of usefulness.\n\nWhen updating an existing shadow, preserve all knowledge and existing scores:\nmissing `citation_score` fields mean `0` and are added on the first recorded\ncitation, so no reinitialization is required.\n\nAfter deliberately consulting an entry, record one citation for it **per task**.\nDo not count every entry merely because its file was opened, repeat the count\non rereads, or count automatic previews that you did not use. Batch updates when\npractical; the agent\u002Fcoordinator tracks which entries it already counted.\n\nUse the small increment helper to avoid competing score edits. It does not\nretrieve knowledge, create a database, or require opaque IDs:\n\n```text\npython .github\u002Fskills\u002Fshadow-frog\u002Fshadow-cite.py .shadow\u002Fsrc\u002Fauth.py.md --symbol UserAuth.validate --text \"Rejects expired tokens.\"\npython .github\u002Fskills\u002Fshadow-frog\u002Fshadow-cite.py .shadow\u002F_prefs.md --text \"Keep public APIs stable.\"\n```\n\nFor Claude Code, use `.claude\u002Fskills\u002F`. Copy the exact claim text already read;\nomit the bullet marker and metadata. Line wrapping is joined, but spaces inside\nliterals remain significant.\nUse `--symbol File-Level` for file-wide entries; omit `--symbol` for preferences\nand `_cross\u002F` files. Repeat `--text` to update several entries in one section\natomically. `--shadow-dir` identifies an explicit nonstandard shadow root.\nUnknown\u002Fambiguous claims and invalid scores fail with corrective feedback.\nFenced examples and unrelated headings are not citation targets.\n\nThe helper locks only its target file and publishes the score changes atomically.\nCoordinate citation writes with ordinary knowledge edits; unrelated editors do\nnot participate in this lock. Subagents should report consulted entries to their\ncoordinator rather than race full-file rewrites. If a lock survives interruption,\nconfirm its writer stopped before removing that specific `.citation.lock` file.\n\nScores stay with the Markdown and travel through Git. They are not exact global\ncounts across branches\u002Fclones: when merging the same knowledge, keep the larger\nscore rather than summing inherited counts. Keep scores when rewording\u002Fmoving\nthe same claim; a genuinely new claim starts at 0. Citation-only edits do not\ncreate discoveries or change discovery totals.\n\nTreat higher scores as a secondary hint after relevance and trust. Never omit\na relevant user constraint or new discovery because its score is low. Native\nsearches and targeted reads remain the normal tools; `\u002Fshadow-frog-viewer`\nserves user browsing and does not automatically record citations.\n\n## Directory Layout\n\n```\n.shadow\u002F\n  .shadowignore      Gitignore-syntax file for excluding paths from the shadow\n  _index.md          File list with symbol counts and discovery counts\n  _prefs.md          Project-wide user preferences (not tied to any file\u002Fsymbol)\n  _cross\u002F            Cross-cutting discoveries (span multiple files)\n    \u003Cslug>.md        One file per cross-cutting discovery (descriptive kebab-case name)\n  _meta\u002F\n    state.json       Last commit, timestamps, counts\n  _dreams\u002F           Dream experiment archive (detailed reports + diffs)\n    _index.md        Table of all experiments with verdicts\n    \u003CYYYYMMDD-HHMMSSZ-slug>\u002F      One folder per experiment\n      report.md      Structured report with YAML frontmatter\n      patch.diff     Full implementation diff against base_commit\n  \u003Cmirrored tree>\u002F   Per-file shadows\n    file.py.md       Organized by symbol\n```\n\n## Reference Notation\n\nCanonical format: `file_path::symbol_name`\n\nExamples: `src\u002Fauth.py::authenticate_user`, `src\u002Fauth.py::UserAuth.validate`,\n`src\u002Fauth.py` (file-level, no symbol)\n\nThe symbol name is the stable anchor.\n\n## Per-File Shadow Format\n\n```markdown\n# Shadow: src\u002Fauth.py\n\n**Language**: Python | **Lines**: 142 | **Last modified**: 2025-01-15\n\n## File-Level\n\n- This module has no __all__ — all top-level names are public.\n  _(verified, source: exploration, citation_score: 0)_\n\n## `class UserAuth`\n\n### `UserAuth.validate`\n\n- Catches ALL exceptions and returns False — swallows\n  connection errors, making network failures look like invalid tokens.\n  _(verified, source: exploration, citation_score: 0)_\n\n## `authenticate_user`\n\n- Silently returns None on expired tokens. Callers must check.\n  _(verified, source: exploration, labels: [bug], citation_score: 0)_\n  Also involves: `src\u002Fmiddleware.py::require_auth`\n\n## Cross-References\n\n- [db-connection-lifecycle](..\u002F_cross\u002Fdb-connection-lifecycle.md)\n  (involves `src\u002Fdb\u002Fconnection.py::ConnectionPool`, `src\u002Fapi\u002Froutes.py::get_user`)\n```\n\nHeading format (**hard rule — parsers depend on this**):\n- Top-level symbols (classes, functions, constants): `##` heading with symbol in backticks\n- Nested symbols (methods): `###` heading with symbol in backticks\n- `## Cross-References` — always last section\n\nThe viewer parser only matches the backtick form. A heading written as\n`### UserAuth.validate` (no backticks) will have its discoveries\nsilently dropped from search\u002Ftop output. Always wrap the symbol in\nbackticks, including for nested symbols.\n\nExamples:\n```\n## `authenticate_user`\n## `class UserAuth`\n### `UserAuth.validate`\n```\n\n## Cross-Cutting File Format (`_cross\u002F\u003Cslug>.md`)\n\n```markdown\n# Database connection lifecycle\n\n**Category**: pattern\n**Refs**:\n- `src\u002Fdb\u002Fconnection.py::ConnectionPool.get`\n- `src\u002Fauth.py::authenticate_user`\n- `src\u002Fapi\u002Froutes.py::get_user`\n\n**Discovery**: All database access goes through a connection pool that\nsilently reconnects on failure. First request after DB restart is slow (~2s).\n\n_(verified, source: exploration, citation_score: 0)_\n```\n\n## Preferences File (`_prefs.md`)\n\nProject-wide user preferences and conventions that are not tied to any\nspecific file or symbol. These guide all agent work across the codebase.\n\n```markdown\n# Preferences\n\n- No backward compatibility — only keep the latest code, no shims or aliases.\n  _(source: user, citation_score: 0)_\n\n- Use snake_case for all Python function and variable names.\n  _(source: user, citation_score: 0)_\n\n- Prefer small, focused PRs over large sweeping changes.\n  _(source: interaction, citation_score: 0)_\n```\n\nFormat:\n```\n- \u003Cpreference or convention>\n  _(source: \u003Cuser|interaction>, citation_score: 0)_\n```\n\nPreferences are always trusted (same rank as `source: user`). They don't\nneed `verified\u002Funcertain\u002Frefuted` — if the user said it, it's a directive.\n\nWhen to write to `_prefs.md` vs per-file shadow vs `_cross\u002F`:\n- Applies to the whole repo, no specific file → `_prefs.md`\n- Applies to a specific file or symbol → per-file shadow\n- Applies to 3+ specific files → `_cross\u002F\u003Cslug>.md`\n\n## Discovery Format\n\nPer-file discoveries (no IDs — anchored by their `file::symbol` heading):\n```\n- \u003Cbehavioral statement>\n  _(\u003Cverified|uncertain|refuted>, source: \u003Cexploration|user|interaction>, citation_score: 0)_\n  Also involves: `file::symbol`, `file::symbol`\n```\n\nWith labels (optional — only when the discovery is actionable):\n```\n- \u003Cbehavioral statement>\n  _(\u003Cverified|uncertain|refuted>, source: \u003Cexploration|user|interaction>, labels: [bug, security], citation_score: 0)_\n  Also involves: `file::symbol`\n```\n\nWith dream report link (optional — only for experiment-derived discoveries):\n```\n- \u003Cbehavioral statement>\n  _(\u003Cverified|uncertain|refuted>, source: \u003Cexploration|user|interaction>, citation_score: 0)_\n  Dream report: `_dreams\u002F\u003Cdream-id>\u002F`\n```\n\nCross-cutting discoveries (one per `_cross\u002F\u003Cslug>.md` file):\n```\n# \u003CTitle>\n\n**Category**: \u003Ccategory>\n**Refs**:\n- `file::symbol`\n\n**Discovery**: \u003Cbehavioral statement>\n\n_(\u003Cverified|uncertain|refuted>, source: \u003Cexploration|user|interaction>, citation_score: 0)_\n```\n\nSlug naming: use descriptive kebab-case derived from the title.\nExample: title \"Database connection lifecycle\" → filename `db-connection-lifecycle.md`\n\n### Labels\n\nLabels mark actionable discoveries so agents can quickly scan for specific\ntypes. Most discoveries are just knowledge — labels are only for findings\nthat call for action.\n\n| Label | Use when |\n|-------|----------|\n| `bug` | A defect that should be fixed |\n| `performance` | A bottleneck or inefficiency |\n| `security` | A vulnerability or unsafe pattern |\n| `feature-gap` | Missing functionality or improvement opportunity |\n| `tech-debt` | Code smell, duplication, refactoring opportunity |\n\nA discovery can have multiple labels: `labels: [bug, security]`.\nOmit labels entirely for pure observational knowledge.\n\nLabels go in the metadata line:\n```\n_(verified, source: exploration, labels: [bug], citation_score: 0)_\n```\n\nCross-cutting discoveries can also have labels — add them to the metadata line.\n\n### Fields\n\n- `verified|uncertain|refuted` — verification status\n- `source: exploration` — agent discovered via code analysis\n- `source: user` — human stated it in conversation\n- `source: interaction` — emerged from collaborative work (debugging, refactoring)\n- `labels: [...]` — optional, actionable labels (see table above)\n- `citation_score: N` — nonnegative integer after optional labels; new entries use 0 and omitted values mean 0\n- `Also involves:` — `file::symbol` refs to other code locations (required if discovery touches other files)\n- `Dream report:` — optional, `_dreams\u002F\u003Cdream-id>\u002F` link for experiment-derived discoveries\n- `Category` (cross-cutting only): pattern, behavior, edge-case, contract, performance, intent, warning, history, convention\n\n## Trust Order\n\n1. `source: user` — highest trust, always `verified`\n2. `source: interaction` — always `verified`\n3. `verified` from exploration\n4. `uncertain` — not yet confirmed\n5. `refuted` — skip\n\n## Five Reference Links (all must be maintained)\n\n1. **File mapping**: `src\u002Fauth.py` ↔ `.shadow\u002Fsrc\u002Fauth.py.md`\n2. **Symbol anchoring**: every source symbol has a `##`\u002F`###` heading in its shadow\n3. **Also involves**: per-file discoveries list other `file::symbol` locations\n4. **Cross-ref back-pointers**: per-file `## Cross-References` links to `_cross\u002F\u003Cslug>.md` entries\n5. **Cross-cutting refs**: `_cross\u002F\u003Cslug>.md` `**Refs**:` lists all involved `file::symbol` locations\n\nLinks 4 and 5 are bidirectional: if `_cross\u002Fdb-connection-lifecycle.md` references\n`src\u002Fauth.py::fn`, then `src\u002Fauth.py.md` must list it in `## Cross-References`, and vice versa.\n\nSymbol addresses include full lexical scope when available: for example,\n`src\u002Fauth.py::factory.Local` or `src\u002Fauth.py::Outer.method.inner`.\nContainer headings keep the kind prefix (`class Outer.Inner`), but\nreferences omit it (`src\u002Fauth.py::Outer.Inner`). Nesting beyond one level\nstill uses `###`, not deeper Markdown heading levels.\n\n## Seven Invariants\n\n1. Every included source file has exactly one shadow at `.shadow\u002F\u003Cpath>.md`\n2. Every symbol in source has a `##`\u002F`###` heading in its shadow\n3. Per-file discoveries touching other files have `Also involves:` with `file::symbol`\n4. Cross-ref back-pointers match: `_cross\u002F\u003Cslug>.md` refs ↔ per-file `## Cross-References`\n5. Every entry in `## Cross-References` has a corresponding `_cross\u002F\u003Cslug>.md` file\n6. Cross-cutting filenames are unique (enforced by filesystem)\n7. No duplicate discoveries (same behavioral claim at same symbol)\n\nTo audit a shadow for structural drift (invariant 3 format, invariants 4–5,\nplus enum and heading-format guards), locate the viewer script and run it:\n\n```bash\nVIEWER=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-viewer .claude\u002Fskills\u002Fshadow-frog-viewer; do\n    [ -f \"$DIR\u002Fshadow-viewer.py\" ] && VIEWER=\"$DIR\u002Fshadow-viewer.py\" && break\ndone\npython3 \"$VIEWER\" --check-invariants\n```\n\nExits 0 if clean, 1 with one violation per line otherwise. Invariant 3 is\nchecked for anchor *format* only (not existence of the referenced file or\nsymbol); invariants 1, 2, and 7 require source parsing \u002F semantic match and\nare not statically checked; invariant 6 is filesystem-enforced.\n\n## Lookup Commands\n\n```bash\n# File's shadow\ncat .shadow\u002Fsrc\u002Fauth.py.md\n\n# Specific symbol's knowledge\ngrep -A 20 \"## \\`authenticate_user\\`\" .shadow\u002Fsrc\u002Fauth.py.md\n\n# Cross-cutting discoveries for a file\ngrep -rl \"src\u002Fauth.py::\" .shadow\u002F_cross\u002F\n\n# Search by topic\ngrep -rl \"error.handling\\|exception\" .shadow\u002F --include=\"*.md\"\n\n# All user-shared knowledge\ngrep -r \"source: user\" .shadow\u002F --include=\"*.md\"\n\n# Project-wide preferences\ncat .shadow\u002F_prefs.md\n\n# List all cross-cutting discovery files\nls .shadow\u002F_cross\u002F\n```\n\n## Verification\n\nTwo methods, use whichever fits the claim:\n\n**Observe-based** (for simpler claims — code reading suffices):\n1. Read the source code at the relevant `file::symbol`\n2. Trace the logic: does the behavioral claim hold?\n3. If confirmed → `verified`. If contradicted → `refuted`. If unclear → `uncertain`.\n\n**Do-based** (for harder claims — requires execution):\n1. Write a short verification script (test, assertion, or probe) that would\n   confirm or refute the claim\n2. Run it\n3. Based on the result → `verified` or `refuted`\n\nPrefer do-based for claims about runtime behavior, performance, error handling\npaths, or race conditions. Prefer observe-based for claims about code structure,\ntypes, or static properties.\n\n## Dedup and Writing Rules\n\nBefore writing any discovery, follow this procedure:\n\n1. **Read before write**: Read all existing discoveries under the target\n   `file::symbol`. If an existing discovery makes the same behavioral\n   claim (even if worded differently) → update the existing one. If the\n   new one extends an existing one → merge into a single richer entry.\n   If they conflict → investigate the code, keep the correct one, mark\n   the other `refuted`.\n2. **Append, don't replace**: If the symbol already has discoveries,\n   append your new one after them. If there is a `_No discoveries yet._`\n   placeholder, remove it and write your discovery. Never use the\n   placeholder as an edit anchor if it's already gone — read the file first.\n3. Write in canonical format (see Discovery Format above)\n4. **Fix bad format**: if you see any existing content that doesn't\n   follow the canonical format, fix it in place\n\nFor cross-cutting, search `_cross\u002F` for overlapping `**Refs**:` sets\nbefore creating a new entry. Only create `_cross\u002F\u003Cslug>.md` for\ndiscoveries spanning **3+ files** — otherwise use per-file entries with\n`Also involves:` references.\n\n## Dream and Nap Parent Connections\n\nBoth skills accept `mode=broad` (default) or `mode=coherent`. Broad mode\nexplores distinct opportunities. Coherent mode regularizes **parent-child\nedges**, not an entire tree: every child has its own `goal`, and siblings\nare encouraged to pursue diverse worthwhile directions. There is no fixed\ntree-wide goal, same-feature requirement, or sibling file-disjointness rule.\n\nA child explains which parent capability, observation, limitation, or decision\nmotivates it. Extending, integrating, challenging, replacing, simplifying, and\noffering an alternative are all valid. Technical independence is not itself\ndisqualifying; a substantive connection matters more than shared vocabulary.\nChallenges are optional, not a quota.\n\nUse this `parent_connection` object in coherent child dream manifests and nap\nnodes (the parent identifier is stored separately, not duplicated here):\n\n```json\n{\n  \"relation\": \"replace\",\n  \"basis\": \"The parent's offset checkpoint can replay output after a crash.\",\n  \"delta\": \"Use idempotent chunk commits while retaining streaming delivery.\",\n  \"preserves\": [\"Bounded memory\", \"The user-facing resume contract\"],\n  \"supersedes\": [\"Offset-only checkpoint design\"]\n}\n```\n\n`relation` is `extend`, `integrate`, `challenge`, `replace`, `simplify`, or\n`alternative`. `basis` and `delta` are nonempty text. `preserves` and\n`supersedes` are lists of nonempty strings; empty lists are allowed except\nthat `replace` must name at least one superseded decision. Roots use null\nor omit the connection. Broad mode does not require a connection, but an\nexplicit connection must still follow this format.\n\nThe shared Python helper `_coherence.py` checks structure only. The agent\nmust judge actual relevance, evidence, and task quality. Superseding a design\ndoes not retroactively refute a historical fact or authorize rewriting user\nrequirements. Keep historical reports; use meditate to resolve contradictory\nshadow claims rather than inventing unsupported dream-manifest operations.\n\nNap parents are ideas\u002Fevidence, not implemented APIs. Task exports must pin a\nreal code baseline separately from idea lineage. Export a root-to-leaf path\nfor a trajectory, not stacked siblings; a final task uses its final active\nrequirements rather than all superseded ancestor designs.\n\nNap task export requires current acceptance from a strong independent judge;\nsee `\u002Fshadow-frog-nap` for the record and review workflow. The host runs the\njudge; the helper checks approval bindings, not reviewer authenticity or\nsemantic truth. Approval is planning confidence, not execution proof.\n\n## Related Skills\n\n- `\u002Fshadow-frog-init` — create `.shadow\u002F` for a new repo\n- `\u002Fshadow-frog-update` — refresh shadows after changes or from conversation\n- `\u002Fshadow-frog-dream` — autonomous exploration and experimentation while user is AFK\n- `\u002Fshadow-frog-nap` — implementation-free, source-grounded feature-task ideation within a work budget\n- `\u002Fshadow-frog-meditate` — deduplicate, merge, and resolve conflicting discoveries\n- `\u002Fshadow-frog-viewer` — browse and query the shadow (overview, search, preferences, recent)\n","# ShadowFrog\n\n`.shadow\u002F` mirrors the source tree. Each source file has a `.md` shadow organized\nby symbol. Each symbol section contains discoveries — behavioral insights anchored\nto that code location.\n\n## Required Actions\n\n**Every time you work on code in a repo with `.shadow\u002F`:**\n\n1. **Read `_prefs.md` first** — it contains project-wide conventions,\n   user preferences, and things to avoid.\n2. **Read relevant `_cross\u002F` discoveries** — list `_cross\u002F` and read entries\n   whose titles relate to the current area, including cross-file contracts\n   and interactions.\n3. **Check `_dreams\u002F_index.md`** and read relevant experiment reports,\n   especially when investigating bugs or unfamiliar code. They may contain\n   findings not yet distilled into per-file shadows.\n4. **Before editing a file**, read its shadow (`.shadow\u002F\u003Cpath>.md`) and\n   relevant `_cross\u002F` entries, then apply the discoveries.\n   `_index.md` counts may be stale; inspect the actual shadows and `_cross\u002F`.\n5. **When the user explains something about code** (gotcha, design intent,\n   warning, history): write a `source: user` discovery to the shadow\n   immediately. Resolve its `file::symbol` anchor from `_index.md`, shadows,\n   and session context; do not ask where to put it.\n6. **When the user states a preference or convention** (not tied to any\n   specific file): write it to `_prefs.md` immediately.\n7. **After code changes**: run `\u002Fshadow-frog-update`\n\n## Record Revisited Knowledge\n\nContinue navigating directly to shadow files and symbol headings. Each\ndiscovery or preference has one visible `citation_score`: a nonnegative integer,\ninitially 0. Missing scores also mean 0. It is approximate, agent-reported\nrevisit frequency, not confidence or proof of usefulness.\n\nWhen updating an existing shadow, preserve all knowledge and existing scores:\nmissing `citation_score` fields mean `0` and are added on the first recorded\ncitation, so no reinitialization is required.\n\nAfter deliberately consulting an entry, record one citation for it **per task**.\nDo not count every entry merely because its file was opened, repeat the count\non rereads, or count automatic previews that you did not use. Batch updates when\npractical; the agent\u002Fcoordinator tracks which entries it already counted.\n\nUse the small increment helper to avoid competing score edits. It does not\nretrieve knowledge, create a database, or require opaque IDs:\n\n```text\npython .github\u002Fskills\u002Fshadow-frog\u002Fshadow-cite.py .shadow\u002Fsrc\u002Fauth.py.md --symbol UserAuth.validate --text \"Rejects expired tokens.\"\npython .github\u002Fskills\u002Fshadow-frog\u002Fshadow-cite.py .shadow\u002F_prefs.md --text \"Keep public APIs stable.\"\n```\n\nFor Claude Code, use `.claude\u002Fskills\u002F`. Copy the exact claim text already read;\nomit the bullet marker and metadata. Line wrapping is joined, but spaces inside\nliterals remain significant.\nUse `--symbol File-Level` for file-wide entries; omit `--symbol` for preferences\nand `_cross\u002F` files. Repeat `--text` to update several entries in one section\natomically. `--shadow-dir` identifies an explicit nonstandard shadow root.\nUnknown\u002Fambiguous claims and invalid scores fail with corrective feedback.\nFenced examples and unrelated headings are not citation targets.\n\nThe helper locks only its target file and publishes the score changes atomically.\nCoordinate citation writes with ordinary knowledge edits; unrelated editors do\nnot participate in this lock. Subagents should report consulted entries to their\ncoordinator rather than race full-file rewrites. If a lock survives interruption,\nconfirm its writer stopped before removing that specific `.citation.lock` file.\n\nScores stay with the Markdown and travel through Git. They are not exact global\ncounts across branches\u002Fclones: when merging the same knowledge, keep the larger\nscore rather than summing inherited counts. Keep scores when rewording\u002Fmoving\nthe same claim; a genuinely new claim starts at 0. Citation-only edits do not\ncreate discoveries or change discovery totals.\n\nTreat higher scores as a secondary hint after relevance and trust. Never omit\na relevant user constraint or new discovery because its score is low. Native\nsearches and targeted reads remain the normal tools; `\u002Fshadow-frog-viewer`\nserves user browsing and does not automatically record citations.\n\n## Directory Layout\n\n```\n.shadow\u002F\n  .shadowignore      Gitignore-syntax file for excluding paths from the shadow\n  _index.md          File list with symbol counts and discovery counts\n  _prefs.md          Project-wide user preferences (not tied to any file\u002Fsymbol)\n  _cross\u002F            Cross-cutting discoveries (span multiple files)\n    \u003Cslug>.md        One file per cross-cutting discovery (descriptive kebab-case name)\n  _meta\u002F\n    state.json       Last commit, timestamps, counts\n  _dreams\u002F           Dream experiment archive (detailed reports + diffs)\n    _index.md        Table of all experiments with verdicts\n    \u003CYYYYMMDD-HHMMSSZ-slug>\u002F      One folder per experiment\n      report.md      Structured report with YAML frontmatter\n      patch.diff     Full implementation diff against base_commit\n  \u003Cmirrored tree>\u002F   Per-file shadows\n    file.py.md       Organized by symbol\n```\n\n## Reference Notation\n\nCanonical format: `file_path::symbol_name`\n\nExamples: `src\u002Fauth.py::authenticate_user`, `src\u002Fauth.py::UserAuth.validate`,\n`src\u002Fauth.py` (file-level, no symbol)\n\nThe symbol name is the stable anchor.\n\n## Per-File Shadow Format\n\n```markdown\n# Shadow: src\u002Fauth.py\n\n**Language**: Python | **Lines**: 142 | **Last modified**: 2025-01-15\n\n## File-Level\n\n- This module has no __all__ — all top-level names are public.\n  _(verified, source: exploration, citation_score: 0)_\n\n## `class UserAuth`\n\n### `UserAuth.validate`\n\n- Catches ALL exceptions and returns False — swallows\n  connection errors, making network failures look like invalid tokens.\n  _(verified, source: exploration, citation_score: 0)_\n\n## `authenticate_user`\n\n- Silently returns None on expired tokens. Callers must check.\n  _(verified, source: exploration, labels: [bug], citation_score: 0)_\n  Also involves: `src\u002Fmiddleware.py::require_auth`\n\n## Cross-References\n\n- [db-connection-lifecycle](..\u002F_cross\u002Fdb-connection-lifecycle.md)\n  (involves `src\u002Fdb\u002Fconnection.py::ConnectionPool`, `src\u002Fapi\u002Froutes.py::get_user`)\n```\n\nHeading format (**hard rule — parsers depend on this**):\n- Top-level symbols (classes, functions, constants): `##` heading with symbol in backticks\n- Nested symbols (methods): `###` heading with symbol in backticks\n- `## Cross-References` — always last section\n\nThe viewer parser only matches the backtick form. A heading written as\n`### UserAuth.validate` (no backticks) will have its discoveries\nsilently dropped from search\u002Ftop output. Always wrap the symbol in\nbackticks, including for nested symbols.\n\nExamples:\n```\n## `authenticate_user`\n## `class UserAuth`\n### `UserAuth.validate`\n```\n\n## Cross-Cutting File Format (`_cross\u002F\u003Cslug>.md`)\n\n```markdown\n# Database connection lifecycle\n\n**Category**: pattern\n**Refs**:\n- `src\u002Fdb\u002Fconnection.py::ConnectionPool.get`\n- `src\u002Fauth.py::authenticate_user`\n- `src\u002Fapi\u002Froutes.py::get_user`\n\n**Discovery**: All database access goes through a connection pool that\nsilently reconnects on failure. First request after DB restart is slow (~2s).\n\n_(verified, source: exploration, citation_score: 0)_\n```\n\n## Preferences File (`_prefs.md`)\n\nProject-wide user preferences and conventions that are not tied to any\nspecific file or symbol. These guide all agent work across the codebase.\n\n```markdown\n# Preferences\n\n- No backward compatibility — only keep the latest code, no shims or aliases.\n  _(source: user, citation_score: 0)_\n\n- Use snake_case for all Python function and variable names.\n  _(source: user, citation_score: 0)_\n\n- Prefer small, focused PRs over large sweeping changes.\n  _(source: interaction, citation_score: 0)_\n```\n\nFormat:\n```\n- \u003Cpreference or convention>\n  _(source: \u003Cuser|interaction>, citation_score: 0)_\n```\n\nPreferences are always trusted (same rank as `source: user`). They don't\nneed `verified\u002Funcertain\u002Frefuted` — if the user said it, it's a directive.\n\nWhen to write to `_prefs.md` vs per-file shadow vs `_cross\u002F`:\n- Applies to the whole repo, no specific file → `_prefs.md`\n- Applies to a specific file or symbol → per-file shadow\n- Applies to 3+ specific files → `_cross\u002F\u003Cslug>.md`\n\n## Discovery Format\n\nPer-file discoveries (no IDs — anchored by their `file::symbol` heading):\n```\n- \u003Cbehavioral statement>\n  _(\u003Cverified|uncertain|refuted>, source: \u003Cexploration|user|interaction>, citation_score: 0)_\n  Also involves: `file::symbol`, `file::symbol`\n```\n\nWith labels (optional — only when the discovery is actionable):\n```\n- \u003Cbehavioral statement>\n  _(\u003Cverified|uncertain|refuted>, source: \u003Cexploration|user|interaction>, labels: [bug, security], citation_score: 0)_\n  Also involves: `file::symbol`\n```\n\nWith dream report link (optional — only for experiment-derived discoveries):\n```\n- \u003Cbehavioral statement>\n  _(\u003Cverified|uncertain|refuted>, source: \u003Cexploration|user|interaction>, citation_score: 0)_\n  Dream report: `_dreams\u002F\u003Cdream-id>\u002F`\n```\n\nCross-cutting discoveries (one per `_cross\u002F\u003Cslug>.md` file):\n```\n# \u003CTitle>\n\n**Category**: \u003Ccategory>\n**Refs**:\n- `file::symbol`\n\n**Discovery**: \u003Cbehavioral statement>\n\n_(\u003Cverified|uncertain|refuted>, source: \u003Cexploration|user|interaction>, citation_score: 0)_\n```\n\nSlug naming: use descriptive kebab-case derived from the title.\nExample: title \"Database connection lifecycle\" → filename `db-connection-lifecycle.md`\n\n### Labels\n\nLabels mark actionable discoveries so agents can quickly scan for specific\ntypes. Most discoveries are just knowledge — labels are only for findings\nthat call for action.\n\n| Label | Use when |\n|-------|----------|\n| `bug` | A defect that should be fixed |\n| `performance` | A bottleneck or inefficiency |\n| `security` | A vulnerability or unsafe pattern |\n| `feature-gap` | Missing functionality or improvement opportunity |\n| `tech-debt` | Code smell, duplication, refactoring opportunity |\n\nA discovery can have multiple labels: `labels: [bug, security]`.\nOmit labels entirely for pure observational knowledge.\n\nLabels go in the metadata line:\n```\n_(verified, source: exploration, labels: [bug], citation_score: 0)_\n```\n\nCross-cutting discoveries can also have labels — add them to the metadata line.\n\n### Fields\n\n- `verified|uncertain|refuted` — verification status\n- `source: exploration` — agent discovered via code analysis\n- `source: user` — human stated it in conversation\n- `source: interaction` — emerged from collaborative work (debugging, refactoring)\n- `labels: [...]` — optional, actionable labels (see table above)\n- `citation_score: N` — nonnegative integer after optional labels; new entries use 0 and omitted values mean 0\n- `Also involves:` — `file::symbol` refs to other code locations (required if discovery touches other files)\n- `Dream report:` — optional, `_dreams\u002F\u003Cdream-id>\u002F` link for experiment-derived discoveries\n- `Category` (cross-cutting only): pattern, behavior, edge-case, contract, performance, intent, warning, history, convention\n\n## Trust Order\n\n1. `source: user` — highest trust, always `verified`\n2. `source: interaction` — always `verified`\n3. `verified` from exploration\n4. `uncertain` — not yet confirmed\n5. `refuted` — skip\n\n## Five Reference Links (all must be maintained)\n\n1. **File mapping**: `src\u002Fauth.py` ↔ `.shadow\u002Fsrc\u002Fauth.py.md`\n2. **Symbol anchoring**: every source symbol has a `##`\u002F`###` heading in its shadow\n3. **Also involves**: per-file discoveries list other `file::symbol` locations\n4. **Cross-ref back-pointers**: per-file `## Cross-References` links to `_cross\u002F\u003Cslug>.md` entries\n5. **Cross-cutting refs**: `_cross\u002F\u003Cslug>.md` `**Refs**:` lists all involved `file::symbol` locations\n\nLinks 4 and 5 are bidirectional: if `_cross\u002Fdb-connection-lifecycle.md` references\n`src\u002Fauth.py::fn`, then `src\u002Fauth.py.md` must list it in `## Cross-References`, and vice versa.\n\nSymbol addresses include full lexical scope when available: for example,\n`src\u002Fauth.py::factory.Local` or `src\u002Fauth.py::Outer.method.inner`.\nContainer headings keep the kind prefix (`class Outer.Inner`), but\nreferences omit it (`src\u002Fauth.py::Outer.Inner`). Nesting beyond one level\nstill uses `###`, not deeper Markdown heading levels.\n\n## Seven Invariants\n\n1. Every included source file has exactly one shadow at `.shadow\u002F\u003Cpath>.md`\n2. Every symbol in source has a `##`\u002F`###` heading in its shadow\n3. Per-file discoveries touching other files have `Also involves:` with `file::symbol`\n4. Cross-ref back-pointers match: `_cross\u002F\u003Cslug>.md` refs ↔ per-file `## Cross-References`\n5. Every entry in `## Cross-References` has a corresponding `_cross\u002F\u003Cslug>.md` file\n6. Cross-cutting filenames are unique (enforced by filesystem)\n7. No duplicate discoveries (same behavioral claim at same symbol)\n\nTo audit a shadow for structural drift (invariant 3 format, invariants 4–5,\nplus enum and heading-format guards), locate the viewer script and run it:\n\n```bash\nVIEWER=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-viewer .claude\u002Fskills\u002Fshadow-frog-viewer; do\n    [ -f \"$DIR\u002Fshadow-viewer.py\" ] && VIEWER=\"$DIR\u002Fshadow-viewer.py\" && break\ndone\npython3 \"$VIEWER\" --check-invariants\n```\n\nExits 0 if clean, 1 with one violation per line otherwise. Invariant 3 is\nchecked for anchor *format* only (not existence of the referenced file or\nsymbol); invariants 1, 2, and 7 require source parsing \u002F semantic match and\nare not statically checked; invariant 6 is filesystem-enforced.\n\n## Lookup Commands\n\n```bash\n# File's shadow\ncat .shadow\u002Fsrc\u002Fauth.py.md\n\n# Specific symbol's knowledge\ngrep -A 20 \"## \\`authenticate_user\\`\" .shadow\u002Fsrc\u002Fauth.py.md\n\n# Cross-cutting discoveries for a file\ngrep -rl \"src\u002Fauth.py::\" .shadow\u002F_cross\u002F\n\n# Search by topic\ngrep -rl \"error.handling\\|exception\" .shadow\u002F --include=\"*.md\"\n\n# All user-shared knowledge\ngrep -r \"source: user\" .shadow\u002F --include=\"*.md\"\n\n# Project-wide preferences\ncat .shadow\u002F_prefs.md\n\n# List all cross-cutting discovery files\nls .shadow\u002F_cross\u002F\n```\n\n## Verification\n\nTwo methods, use whichever fits the claim:\n\n**Observe-based** (for simpler claims — code reading suffices):\n1. Read the source code at the relevant `file::symbol`\n2. Trace the logic: does the behavioral claim hold?\n3. If confirmed → `verified`. If contradicted → `refuted`. If unclear → `uncertain`.\n\n**Do-based** (for harder claims — requires execution):\n1. Write a short verification script (test, assertion, or probe) that would\n   confirm or refute the claim\n2. Run it\n3. Based on the result → `verified` or `refuted`\n\nPrefer do-based for claims about runtime behavior, performance, error handling\npaths, or race conditions. Prefer observe-based for claims about code structure,\ntypes, or static properties.\n\n## Dedup and Writing Rules\n\nBefore writing any discovery, follow this procedure:\n\n1. **Read before write**: Read all existing discoveries under the target\n   `file::symbol`. If an existing discovery makes the same behavioral\n   claim (even if worded differently) → update the existing one. If the\n   new one extends an existing one → merge into a single richer entry.\n   If they conflict → investigate the code, keep the correct one, mark\n   the other `refuted`.\n2. **Append, don't replace**: If the symbol already has discoveries,\n   append your new one after them. If there is a `_No discoveries yet._`\n   placeholder, remove it and write your discovery. Never use the\n   placeholder as an edit anchor if it's already gone — read the file first.\n3. Write in canonical format (see Discovery Format above)\n4. **Fix bad format**: if you see any existing content that doesn't\n   follow the canonical format, fix it in place\n\nFor cross-cutting, search `_cross\u002F` for overlapping `**Refs**:` sets\nbefore creating a new entry. Only create `_cross\u002F\u003Cslug>.md` for\ndiscoveries spanning **3+ files** — otherwise use per-file entries with\n`Also involves:` references.\n\n## Dream and Nap Parent Connections\n\nBoth skills accept `mode=broad` (default) or `mode=coherent`. Broad mode\nexplores distinct opportunities. Coherent mode regularizes **parent-child\nedges**, not an entire tree: every child has its own `goal`, and siblings\nare encouraged to pursue diverse worthwhile directions. There is no fixed\ntree-wide goal, same-feature requirement, or sibling file-disjointness rule.\n\nA child explains which parent capability, observation, limitation, or decision\nmotivates it. Extending, integrating, challenging, replacing, simplifying, and\noffering an alternative are all valid. Technical independence is not itself\ndisqualifying; a substantive connection matters more than shared vocabulary.\nChallenges are optional, not a quota.\n\nUse this `parent_connection` object in coherent child dream manifests and nap\nnodes (the parent identifier is stored separately, not duplicated here):\n\n```json\n{\n  \"relation\": \"replace\",\n  \"basis\": \"The parent's offset checkpoint can replay output after a crash.\",\n  \"delta\": \"Use idempotent chunk commits while retaining streaming delivery.\",\n  \"preserves\": [\"Bounded memory\", \"The user-facing resume contract\"],\n  \"supersedes\": [\"Offset-only checkpoint design\"]\n}\n```\n\n`relation` is `extend`, `integrate`, `challenge`, `replace`, `simplify`, or\n`alternative`. `basis` and `delta` are nonempty text. `preserves` and\n`supersedes` are lists of nonempty strings; empty lists are allowed except\nthat `replace` must name at least one superseded decision. Roots use null\nor omit the connection. Broad mode does not require a connection, but an\nexplicit connection must still follow this format.\n\nThe shared Python helper `_coherence.py` checks structure only. The agent\nmust judge actual relevance, evidence, and task quality. Superseding a design\ndoes not retroactively refute a historical fact or authorize rewriting user\nrequirements. Keep historical reports; use meditate to resolve contradictory\nshadow claims rather than inventing unsupported dream-manifest operations.\n\nNap parents are ideas\u002Fevidence, not implemented APIs. Task exports must pin a\nreal code baseline separately from idea lineage. Export a root-to-leaf path\nfor a trajectory, not stacked siblings; a final task uses its final active\nrequirements rather than all superseded ancestor designs.\n\nNap task export requires current acceptance from a strong independent judge;\nsee `\u002Fshadow-frog-nap` for the record and review workflow. The host runs the\njudge; the helper checks approval bindings, not reviewer authenticity or\nsemantic truth. Approval is planning confidence, not execution proof.\n\n## Related Skills\n\n- `\u002Fshadow-frog-init` — create `.shadow\u002F` for a new repo\n- `\u002Fshadow-frog-update` — refresh shadows after changes or from conversation\n- `\u002Fshadow-frog-dream` — autonomous exploration and experimentation while user is AFK\n- `\u002Fshadow-frog-nap` — implementation-free, source-grounded feature-task ideation within a work budget\n- `\u002Fshadow-frog-meditate` — deduplicate, merge, and resolve conflicting discoveries\n- `\u002Fshadow-frog-viewer` — browse and query the shadow (overview, search, preferences, recent)\n",{"name":5,"scripts":44,"description":7},[45],"shadow-cite.py","main","73b1ae349b0f6145755490be033dcc21d07c22c2","skills\u002Fshadow-frog",9,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-05 10:56:08",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add microsoft\u002FShadowFrog --skill shadow-frog",{"tool":61,"command":62},"bunx","bunx skills add microsoft\u002FShadowFrog --skill shadow-frog",{"tool":64,"command":65},"pnpm","pnpm dlx skills add microsoft\u002FShadowFrog --skill shadow-frog","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog\u002FSKILL.md",true,[69,75,79],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"_citations.py","SCRIPT","脚本",8652,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog\u002F_citations.py",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"_coherence.py",2297,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog\u002F_coherence.py",{"path":45,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":80,"sourceHtmlUrl":81},2000,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog\u002Fshadow-cite.py",[83,93,113,126,134,149],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":39},"01M69BTX451Y89BYJ36DEYJQPA","shadow-frog-viewer","Help users browse and visualize the shadow knowledge base: overview, search for files or symbols or text, view preferences, or see recent discoveries. Invoke when the user wants to see what's in the shadow, get an overview, or find specific knowledge.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog-viewer\u002FSKILL.md",[],[90,91,92],"shadow frog viewer","visualize","help",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":39},"01M69BTVF2EGFP9RDPPKWMS3V6","shadow-frog-update","Update the shadow knowledge base after code changes and from conversational insights. Detects what changed via git diff, refreshes per-file shadows, captures knowledge shared by the user during the session, and updates cross-cutting discoveries. Invoke manually with \u002Fshadow-frog-update; the preToolUse hook will remind the agent when the shadow is behind HEAD.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog-update\u002FSKILL.md",[],[19,20,100,33,101,31,102,103,28,104,105,106,24,107,108,109,110,23,111,112],"shadow frog update","base","git","file","remind","session","diff","shared","head","via","with","updates","changes",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":39},"01M69BTS58A2NGMMP9V5SH1FVE","shadow-frog-nap","Generate grounded software feature-task briefs with a small, bounded ideation budget instead of implementing every idea. Read focused source and optional shadow\u002Fdream evidence, grow or resume a persistent proposal tree, and obtain independent shortlist judgments. Run only decision-changing probes of existing behavior. Use mode=coherent to connect each child to its parent's findings or design while encouraging diverse siblings. Use for lightweight ideation, nap runs, or preparing SWE implementation tasks; use shadow-frog-dream for full implementation-backed experiments.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog-nap\u002FSKILL.md",[],[120,36,121,122,123,38,124,125],"shadow frog nap","run","generate","design","tasks","connect",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":39},"01M69BTQ4VYJ5TEYGJ0JT6AYYS","shadow-frog-meditate","Clean and consolidate the shadow knowledge base. Scans all shadow files for duplicate discoveries (same claim, different wording), near-duplicates (one extends another), and conflicting entries (contradicting claims). Merges duplicates, resolves conflicts by investigating the code, and asks the user only when resolution is unclear. Invoke periodically to keep the shadow focused and free of noise.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog-meditate\u002FSKILL.md",[],[133,31],"shadow frog meditate",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":39},"01M69BTN77C5G6REERWK8G4FB6","shadow-frog-init","Initialize a shadow knowledge base for any codebase. Creates a .shadow\u002F directory that mirrors the source tree with markdown files for AI-discovered insights. Run this once per repo before using other shadow-frog skills. Refuses to overwrite an existing .shadow\u002F unless --reset is passed.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog-init\u002FSKILL.md",[],[19,20,141,37,23,121,21,28,142,143,25,101,24,144,110,30,145,146,147,148],"shadow frog init","repo","initialize","reset","tree","for","codebase","Existing",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":160,"publishedAt":39},"01M69BTHHMPCWRRG66A846XZ06","shadow-frog-dream","Run autonomous experimentation while the user is AFK. Uses 6 investigation categories (investigation, bug hunting, feature design, refactoring, optimization, security audit) to systematically discover non-obvious behaviors. Every task is an experiment — implement in worktrees, commit to persistent dream branches, and push to the configured remote. Dreams compound across sessions: future experiments branch from prior dream branches, building a tree of progressively deeper work. Invoke when the user is AFK or asks for a dream run. Use mode=coherent to ground each child in its parent while encouraging diverse siblings, challenges, and alternatives.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Fblob\u002Fmain\u002Fskills\u002Fshadow-frog-dream\u002FSKILL.md",[155],{"categoryNo":156,"categoryName":157,"taxonomyType":158,"taxonomyTypeDesc":159},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",[161,162,163,164,38,165,166,121,167,123,168],"shadow frog dream","validate","commit","sessions","implement","security","cleanup","setup"]