[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H1FD05M9AVK200R2HJWPTY":3,"skill-same:01M6H1FD05M9AVK200R2HJWPTY":70},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":6,"updatedAt":56,"install":57,"resources":69},"01M6H1FD05M9AVK200R2HJWPTY","hyalo-tidy",null,"Perform a reflective consolidation pass over a hyalo-managed knowledgebase directory — detecting structural issues, fixing broken links, flagging stale content, normalizing metadata, and reporting what changed. Use this skill when the user says \u002Fhyalo-tidy, \"consolidate the knowledgebase\", \"clean up the KB\", \"run KB hygiene\", \"tidy\", or \"what needs attention in the knowledgebase\". Also use when the user asks about knowledgebase health, broken links, orphan files, stale iterations, or metadata inconsistencies.","ractive\u002Fhyalo","ractive","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F783861?v=4","01M6H1E120XG8G9XFCVZZAF62C","Jean-Pierre Bergamin","01M6H1E169A4CHQA1DPW0CKZJM",29,"MIT","https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo\u002Fblob\u002Fmain\u002Fcrates\u002Fhyalo-cli\u002Ftemplates\u002Fpi\u002Fskills\u002Fhyalo-tidy\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"hyalo","tidy","hyalo tidy","attention","when","managed","links","detecting","consolidation","false","orphan","structural","directory","consolidate","clean","files","up","kb","broken","reporting","issues","run","2026-11-10 10:12:30",false,"---\nname: hyalo-tidy\nuser_invocable: false\ndescription: >\n  Perform a reflective consolidation pass over a hyalo-managed knowledgebase directory —\n  detecting structural issues, fixing broken links, flagging stale content, normalizing\n  metadata, and reporting what changed. Use this skill when the user says \u002Fhyalo-tidy,\n  \"consolidate the knowledgebase\", \"clean up the KB\", \"run KB hygiene\", \"tidy\", or\n  \"what needs attention in the knowledgebase\". Also use when the user asks about\n  knowledgebase health, broken links, orphan files, stale iterations, or metadata\n  inconsistencies.\ncontext: fork\ndisable-model-invocation: true\n---\n\n# Hyalo Tidy — Knowledgebase Consolidation for pi\n\nYou are performing a tidy — a reflective pass over a knowledgebase. Your job is to\ndetect issues, fix what you can, and report what needs human attention. Think of this\nas a librarian doing a periodic shelf-read: checking that everything is filed correctly,\ncross-references work, and nothing is gathering dust in the wrong place.\n\n**For pi sessions, use `--format text` for agent-facing Hyalo output.**\nThe optional helper uses JSON internally for reliable machine processing.\n\nThis process has 5 phases. Take your time — a thorough tidy is worth more than a fast\none. A few minutes is fine.\n\n## Before you start\n\nLocate the hyalo binary:\n```bash\nwhich hyalo 2>\u002Fdev\u002Fnull || echo \"target\u002Frelease\u002Fhyalo\"\n```\n\nConfirm `.hyalo.toml` exists in the project root to determine the KB directory. If it\ndoesn't exist, ask the user which directory to consolidate.\n\n## Optional Jev assistance and audit scope\n\nOnly when the user explicitly requests Jev, read [references\u002Fjev.md](references\u002Fjev.md)\nand follow that branch before loading full document bodies. A key or repository\nsetting never enables it. Ordinary tidy needs no JavaScript runtime or network.\nJev failure leaves the usual local workflow available.\n\nAn audit or health question is read-only: omit `--index` throughout, skip index\ncreation\u002Fremoval, and return Phase 4 repairs as proposals only. Jev-assisted runs\nalso skip indexes and follow the reference's scope and review rules. A request to\ntidy or repair authorizes relevant edits, preserving unrelated content and metadata.\n\nCommand examples below omit `--index`. Add it only for a repair run without Jev\nafter creating its snapshot. Audits and every Jev-assisted run use live reads.\n\n## Phase 1 — Orient and snapshot\n\nGet the lay of the land. Create an index only for a repair run without Jev;\nfor audits and Jev-assisted runs, omit the index step and all `--index` flags.\n\n```bash\n# 1. High-level overview (baseline for the final health dashboard)\nhyalo summary --format text\n\n# 2. Repair runs without Jev only: create snapshot index\nhyalo create-index --format text\n\n# 3. Inspect existing saved views without rewriting configuration\nhyalo views list --format text\n\n# Use a matching saved view when present; otherwise keep diagnostics inline\nhyalo find --property status=in-progress --fields tasks --format text\nhyalo find --property '!status' --format text\nhyalo find --property '!type' --format text\nhyalo find --orphan --fields backlinks --format text\nhyalo find --property status=completed --task todo --fields tasks --format text\n```\n\nDo not create or replace saved views during a tidy unless the user explicitly asks;\nthe diagnostic phase must leave existing definitions byte-for-byte unchanged.\n\nThe snapshot index captures every file's metadata in a binary file (`.hyalo-index`).\nFor repair runs without Jev, add `--index` to Phase 2 and Phase 3 queries to avoid\nrepeated disk scans. Otherwise keep it omitted. For complex reshaping, combine\nHyalo filtering with `--jq`.\n\nAlso grab the tag vocabulary for inconsistency detection:\n```bash\nhyalo tags summary --format text\n```\n\n## Phase 2 — Gather recent signal\n\nBefore looking for issues, understand what happened recently. This context is what\nmakes the tidy valuable — it tells you what *should* have changed in the KB, so you\ncan spot what didn't.\n\n### Git history\n\n```bash\n# What branches were merged recently? What iteration branches shipped?\ngit log --oneline --merges --since=\"4 weeks ago\"\n\n# What areas of code changed? (helps identify which features shipped)\ngit log --oneline --since=\"4 weeks ago\" -- \"*.rs\" | head -30\n```\n\nExtract non-completed iterations and their branches from the index:\n```bash\nhyalo find --property type=iteration --jq '.results | map(select(.properties.status != \"completed\" and .properties.status != \"superseded\" and .properties.status != \"wont-do\")) | map({file, branch: .properties.branch, status: .properties.status})'\n```\n\nFor each non-completed iteration that has a branch, check if that branch was merged:\n```bash\ngit log --oneline --merges --all | grep \"\u003Cbranch-name>\"\n```\n\n### Claude's auto-memory\n\nCheck what was recently worked on from Claude's perspective:\n```bash\nMEMORY_FILE=$(find ~\u002F.claude\u002Fprojects\u002F -path \"*\u002Fmemory\u002FMEMORY.md\" -print -quit 2>\u002Fdev\u002Fnull)\nif [ -n \"$MEMORY_FILE\" ]; then\n  MEMORY_DIR=$(dirname \"$MEMORY_FILE\")\nfi\n```\n\nIf found, query it with hyalo (memory files are outside the vault, so no --index here):\n```bash\nhyalo --dir \"$MEMORY_DIR\" find --property type=project --format text\nhyalo --dir \"$MEMORY_DIR\" find --property type=feedback --format text\n```\n\nLook for:\n- Project memories mentioning iterations\u002Ffeatures that shipped — cross-reference with KB\n- Stale project memories that reference outdated plans (note for the report, but\n  don't modify memory files — that's Claude's own territory)\n\n### Recent KB changes\n\n```bash\ngit log --oneline --since=\"4 weeks ago\" -- \"hyalo-knowledgebase\u002F\" | head -20\ngit log --diff-filter=A --name-only --since=\"4 weeks ago\" -- \"hyalo-knowledgebase\u002F\"\n```\n\n## Phase 3 — Detect structural issues\n\nQueries below use live reads and inline selectors, so they work without saved views.\nOnly repair runs without Jev may add `--index`.\n\n### Schema & lint\nCheck if type schemas are defined, then run lint in strict mode. `hyalo lint` covers\nboth frontmatter schema *and* the markdown body (stock mdbook-lint rules + HYALO native\nrules for things like bare `[]` checkboxes and `status: completed` with open tasks).\n`--strict` promotes the \"no `type` property\" and \"undeclared property in frontmatter\"\nwarnings and HYALO003\u002F004\u002F006\u002F007\u002F008 (dates, datetimes, broken links, non-scalar titles,\nbroken anchors) to errors so a tidy pass fails fast on schema and link drift:\n```bash\nhyalo types list --format text\nhyalo lint --strict --format text\n```\n\nIf `hyalo types list` returns zero types but files have a `type` property, propose\ncreating type schemas. Use `hyalo properties summary` to discover common property\nvalues, then suggest `hyalo types set \u003Cname> --required ...`\ncommands for the user's most common document types. Don't create them unilaterally —\nreport the suggestion in Phase 5.\n\nNote the lint summary's per-rule counts. If **one rule dominates the noise** (e.g.\nMD013 line-length on prose-heavy KBs), that's a signal the rule may not fit the KB —\nflag it for Phase 5 as a candidate to disable via `hyalo lint-rules`. Track fixable\ncounts for Phase 4.\n\nLint also validates `[views.*]` in `.hyalo.toml`. A view whose only narrowing key is\n`fields` (display columns, not a filter) is surfaced as a warning — suggest adding an\nexplicit filter like `orphan = true`, `dead_end = true`, or `tag = [...]` when you see\none in Phase 5.\n\n### Broken links\n```bash\n# Dry-run shows broken links with proposed fixes and confidence scores\nhyalo links fix --format text\n```\nThis categorizes links as **fixable** (fuzzy match found) vs **unfixable** (no match).\nNote the counts for the health dashboard. Actual fixes happen in Phase 4.\n\n### Orphan files\n```bash\nhyalo find --orphan --fields backlinks --jq '.results | map(select(.backlinks | length == 0)) | map(.file)'\n```\nNot all orphans are problems. Expect these to be legitimately orphaned:\n- Top-level files (SEED.md, project-pitch.md, decision-log.md)\n- Research documents (standalone reports)\n- Older completed items in `done\u002F` directories\n\nFocus on **actionable orphans**: active\u002Fplanned items that should be cross-referenced.\n\n### Dead-end files\n```bash\nhyalo find --dead-end --jq '.results | map(.file)'\n```\nDead-end files have inbound links but no outbound links — often stubs or leaf nodes\nthat could benefit from cross-references. Not always a problem, but worth reviewing.\n\n### Stale statuses\n```bash\n# In-progress items — should any be completed?\nhyalo find --property status=in-progress --fields properties --jq '.results | map({file, date: .properties.date, branch: .properties.branch})'\n\n# Planned items where all tasks are done\nhyalo find --property status=planned --fields tasks --jq '.results | map(select((.tasks | length > 0) and ([.tasks[] | select(.status != \"x\")] | length) == 0)) | map(.file)'\n\n# In-progress items sorted by date (oldest first — possibly stale)\nhyalo find --property status=in-progress --fields properties --jq '.results | map(select(.properties.date != null)) | sort_by(.properties.date) | map({file, date: .properties.date})'\n```\nCross-reference with git merges from Phase 2. If the branch was merged, update status.\n\n### Stale backlog items\n```bash\nhyalo find --property status=planned --property type=backlog --jq '.results | map({file, title})'\n```\nCompare each planned backlog item against merged iterations and recent git history.\nIf the feature clearly shipped (in a different iteration or under a different name),\nflag it.\n\n### Missing metadata\n```bash\nhyalo find --property '!status' --jq '.results | map(.file)'\nhyalo find --property '!type' --jq '.results | map(.file)'\n```\n\n### Tag inconsistencies\nReview the `hyalo tags summary` output from Phase 1. Look for near-duplicates:\nsingular\u002Fplural (`filter`\u002F`filters`), hyphenation variants (`bugfix`\u002F`bug-fix`),\nabbreviations (`perf`\u002F`performance`). The canonical form should be the one used by\nmore files.\n\n### Task completion vs status mismatch\nThe `HYALO002` rule from the lint pass already flags `status: completed` files with\nopen tasks (fires only when `[schema.types.*].properties.status` is declared as an enum\ncontaining `\"completed\"`). If you want a per-file breakdown with open\u002Ftotal counts, use this inline query:\n```bash\nhyalo find --property status=completed --task todo --fields tasks --jq '.results | map({file, open: ([.tasks[] | select(.status != \"x\")] | length), total: (.tasks | length)})'\n```\nIf many completed items have unchecked tasks, this is a workflow pattern — note it once\nin the report rather than listing every file.\n\n## Phase 4 — Consolidate\n\nApply these changes only within an authorized repair request. For an audit,\nreport the proposed changes. Be conservative — prefer fixing metadata over deleting files. For\neach change, note what you did and why.\n\nFor repair runs without Jev, add `--index` to mutations to keep the snapshot\ncurrent. Jev-assisted repairs omit it from every command. Audits propose changes\nwithout applying them; neither audits nor Jev runs create or remove indexes.\n\n### Fix lint violations\nIf lint reported fixable violations in Phase 3, auto-fix them. `--fix` covers both\npasses — frontmatter (defaults, typos, dates, types) and body (e.g. `HYALO001` bare\nbrackets, trailing whitespace). Always preview with `--dry-run` first:\n```bash\nhyalo lint --fix --dry-run --format text\nhyalo lint --fix --format text\n```\n\nIf you only want to fix specific rules (e.g. body fixes only, leaving frontmatter\nalone), use `--fix-rule` or `--rule-prefix HYALO` — see `hyalo lint --help`.\n\nUnfixable violations (missing required properties, open tasks under `HYALO002`) are\nreported in Phase 5 for human attention.\n\n### Fix broken links\nUse `hyalo links fix` to auto-repair broken links. It uses fuzzy matching to find the\ncorrect target (handles moves to `done\u002F`, case changes, extension mismatches, etc.).\n\n```bash\n# Preview what will be fixed\nhyalo links fix --format text\n\n# Apply fixes\nhyalo links fix --apply --format text\n```\n\nReview the dry-run output first. For any links it can't resolve (reported as unfixable),\nleave them and report them in Phase 5.\n\n### Update stale statuses\nIf an iteration's branch was merged:\n```bash\nhyalo set \u003Cpath> --property status=completed --format text\n```\n\nIf a backlog item's feature clearly shipped:\n```bash\nhyalo set \u003Cpath> --property status=completed --format text\n```\n\nOnly update when the evidence is clear. When uncertain, flag it in the report.\n\n### Archive completed items\nIf completed items are in a top-level directory and a `done\u002F` subfolder exists:\n```bash\nhyalo mv \u003Cold-path> --to \u003Cdone-subdir\u002Ffilename> --dry-run --format text\n```\nReview the dry-run output. If correct, execute without `--dry-run`.\n\n### Normalize tags\n```bash\nhyalo tags rename --from \u003Cvariant> --to \u003Ccanonical> --format text\n```\n\n### Add missing cross-references\nIf a backlog item was implemented by an iteration but neither links to the other,\nadd a `[[wikilink]]`. Only where the relationship is clear and useful.\n\n## Phase 5 — Report\n\nSummarize everything. Structure as:\n\n### Changes made\nOne line per change with reasoning:\n```\n- Set status=completed on iteration-43.md (branch iter-43\u002Fdata-quality merged in abc1234)\n- Moved iteration-46.md to iterations\u002Fdone\u002F (completed, all tasks verified)\n- Renamed tag: bugfix → bug-fix (2 files, matching existing convention)\n- Fixed 5 broken links in research\u002Fdogfooding-v0.4.1-consolidated.md (same-dir targets)\n```\n\n### Issues requiring human attention\nThings you detected but couldn't (or shouldn't) fix unilaterally. Keep it concise —\none line per issue with enough context to act on.\n\nIf a single lint rule produced an outsized share of the noise (or if a rule fired only\non legitimate exceptions), suggest tuning it via `hyalo lint-rules` rather than\nsilently leaving the warnings in place.\n\n### KB health dashboard\nRe-run `hyalo summary --format text` (fresh scan after mutations — no `--index`) and compare with\nPhase 1 baseline. Report the delta: statuses changed, links fixed, tags normalized,\nfiles moved.\n\n## Ground rules\n\n- **Conservative by default**: when in doubt, report rather than change.\n- **Never delete files or body content**: update frontmatter, fix links, move files,\n  suggest changes — but the user decides what to throw away.\n- **Explain every change**: include the evidence (commit hash, task counts, etc.).\n- **Don't modify Claude's memory files**: report stale memories but don't edit them.\n- **Use hyalo for mutations**: `hyalo set`\u002F`remove` for frontmatter, `hyalo tags rename`\n  for tags, `hyalo mv` for moves. Fall back to Edit only for body content (fixing\n  wikilink text in prose, adding cross-reference lines).\n- **Batch similar findings**: if 15 completed items have unchecked tasks, say that once\n  with the count. The report should be scannable in 30 seconds.\n- **Minimize disk scans in repair runs without Jev**: use `--index` for queries and mutations.\n  Mutations automatically patch the index in-place — no need to drop and recreate.\n  Only drop the index at the very end when the session is complete.\n","# Hyalo Tidy — Knowledgebase Consolidation for pi\n\nYou are performing a tidy — a reflective pass over a knowledgebase. Your job is to\ndetect issues, fix what you can, and report what needs human attention. Think of this\nas a librarian doing a periodic shelf-read: checking that everything is filed correctly,\ncross-references work, and nothing is gathering dust in the wrong place.\n\n**For pi sessions, use `--format text` for agent-facing Hyalo output.**\nThe optional helper uses JSON internally for reliable machine processing.\n\nThis process has 5 phases. Take your time — a thorough tidy is worth more than a fast\none. A few minutes is fine.\n\n## Before you start\n\nLocate the hyalo binary:\n```bash\nwhich hyalo 2>\u002Fdev\u002Fnull || echo \"target\u002Frelease\u002Fhyalo\"\n```\n\nConfirm `.hyalo.toml` exists in the project root to determine the KB directory. If it\ndoesn't exist, ask the user which directory to consolidate.\n\n## Optional Jev assistance and audit scope\n\nOnly when the user explicitly requests Jev, read [references\u002Fjev.md](references\u002Fjev.md)\nand follow that branch before loading full document bodies. A key or repository\nsetting never enables it. Ordinary tidy needs no JavaScript runtime or network.\nJev failure leaves the usual local workflow available.\n\nAn audit or health question is read-only: omit `--index` throughout, skip index\ncreation\u002Fremoval, and return Phase 4 repairs as proposals only. Jev-assisted runs\nalso skip indexes and follow the reference's scope and review rules. A request to\ntidy or repair authorizes relevant edits, preserving unrelated content and metadata.\n\nCommand examples below omit `--index`. Add it only for a repair run without Jev\nafter creating its snapshot. Audits and every Jev-assisted run use live reads.\n\n## Phase 1 — Orient and snapshot\n\nGet the lay of the land. Create an index only for a repair run without Jev;\nfor audits and Jev-assisted runs, omit the index step and all `--index` flags.\n\n```bash\n# 1. High-level overview (baseline for the final health dashboard)\nhyalo summary --format text\n\n# 2. Repair runs without Jev only: create snapshot index\nhyalo create-index --format text\n\n# 3. Inspect existing saved views without rewriting configuration\nhyalo views list --format text\n\n# Use a matching saved view when present; otherwise keep diagnostics inline\nhyalo find --property status=in-progress --fields tasks --format text\nhyalo find --property '!status' --format text\nhyalo find --property '!type' --format text\nhyalo find --orphan --fields backlinks --format text\nhyalo find --property status=completed --task todo --fields tasks --format text\n```\n\nDo not create or replace saved views during a tidy unless the user explicitly asks;\nthe diagnostic phase must leave existing definitions byte-for-byte unchanged.\n\nThe snapshot index captures every file's metadata in a binary file (`.hyalo-index`).\nFor repair runs without Jev, add `--index` to Phase 2 and Phase 3 queries to avoid\nrepeated disk scans. Otherwise keep it omitted. For complex reshaping, combine\nHyalo filtering with `--jq`.\n\nAlso grab the tag vocabulary for inconsistency detection:\n```bash\nhyalo tags summary --format text\n```\n\n## Phase 2 — Gather recent signal\n\nBefore looking for issues, understand what happened recently. This context is what\nmakes the tidy valuable — it tells you what *should* have changed in the KB, so you\ncan spot what didn't.\n\n### Git history\n\n```bash\n# What branches were merged recently? What iteration branches shipped?\ngit log --oneline --merges --since=\"4 weeks ago\"\n\n# What areas of code changed? (helps identify which features shipped)\ngit log --oneline --since=\"4 weeks ago\" -- \"*.rs\" | head -30\n```\n\nExtract non-completed iterations and their branches from the index:\n```bash\nhyalo find --property type=iteration --jq '.results | map(select(.properties.status != \"completed\" and .properties.status != \"superseded\" and .properties.status != \"wont-do\")) | map({file, branch: .properties.branch, status: .properties.status})'\n```\n\nFor each non-completed iteration that has a branch, check if that branch was merged:\n```bash\ngit log --oneline --merges --all | grep \"\u003Cbranch-name>\"\n```\n\n### Claude's auto-memory\n\nCheck what was recently worked on from Claude's perspective:\n```bash\nMEMORY_FILE=$(find ~\u002F.claude\u002Fprojects\u002F -path \"*\u002Fmemory\u002FMEMORY.md\" -print -quit 2>\u002Fdev\u002Fnull)\nif [ -n \"$MEMORY_FILE\" ]; then\n  MEMORY_DIR=$(dirname \"$MEMORY_FILE\")\nfi\n```\n\nIf found, query it with hyalo (memory files are outside the vault, so no --index here):\n```bash\nhyalo --dir \"$MEMORY_DIR\" find --property type=project --format text\nhyalo --dir \"$MEMORY_DIR\" find --property type=feedback --format text\n```\n\nLook for:\n- Project memories mentioning iterations\u002Ffeatures that shipped — cross-reference with KB\n- Stale project memories that reference outdated plans (note for the report, but\n  don't modify memory files — that's Claude's own territory)\n\n### Recent KB changes\n\n```bash\ngit log --oneline --since=\"4 weeks ago\" -- \"hyalo-knowledgebase\u002F\" | head -20\ngit log --diff-filter=A --name-only --since=\"4 weeks ago\" -- \"hyalo-knowledgebase\u002F\"\n```\n\n## Phase 3 — Detect structural issues\n\nQueries below use live reads and inline selectors, so they work without saved views.\nOnly repair runs without Jev may add `--index`.\n\n### Schema & lint\nCheck if type schemas are defined, then run lint in strict mode. `hyalo lint` covers\nboth frontmatter schema *and* the markdown body (stock mdbook-lint rules + HYALO native\nrules for things like bare `[]` checkboxes and `status: completed` with open tasks).\n`--strict` promotes the \"no `type` property\" and \"undeclared property in frontmatter\"\nwarnings and HYALO003\u002F004\u002F006\u002F007\u002F008 (dates, datetimes, broken links, non-scalar titles,\nbroken anchors) to errors so a tidy pass fails fast on schema and link drift:\n```bash\nhyalo types list --format text\nhyalo lint --strict --format text\n```\n\nIf `hyalo types list` returns zero types but files have a `type` property, propose\ncreating type schemas. Use `hyalo properties summary` to discover common property\nvalues, then suggest `hyalo types set \u003Cname> --required ...`\ncommands for the user's most common document types. Don't create them unilaterally —\nreport the suggestion in Phase 5.\n\nNote the lint summary's per-rule counts. If **one rule dominates the noise** (e.g.\nMD013 line-length on prose-heavy KBs), that's a signal the rule may not fit the KB —\nflag it for Phase 5 as a candidate to disable via `hyalo lint-rules`. Track fixable\ncounts for Phase 4.\n\nLint also validates `[views.*]` in `.hyalo.toml`. A view whose only narrowing key is\n`fields` (display columns, not a filter) is surfaced as a warning — suggest adding an\nexplicit filter like `orphan = true`, `dead_end = true`, or `tag = [...]` when you see\none in Phase 5.\n\n### Broken links\n```bash\n# Dry-run shows broken links with proposed fixes and confidence scores\nhyalo links fix --format text\n```\nThis categorizes links as **fixable** (fuzzy match found) vs **unfixable** (no match).\nNote the counts for the health dashboard. Actual fixes happen in Phase 4.\n\n### Orphan files\n```bash\nhyalo find --orphan --fields backlinks --jq '.results | map(select(.backlinks | length == 0)) | map(.file)'\n```\nNot all orphans are problems. Expect these to be legitimately orphaned:\n- Top-level files (SEED.md, project-pitch.md, decision-log.md)\n- Research documents (standalone reports)\n- Older completed items in `done\u002F` directories\n\nFocus on **actionable orphans**: active\u002Fplanned items that should be cross-referenced.\n\n### Dead-end files\n```bash\nhyalo find --dead-end --jq '.results | map(.file)'\n```\nDead-end files have inbound links but no outbound links — often stubs or leaf nodes\nthat could benefit from cross-references. Not always a problem, but worth reviewing.\n\n### Stale statuses\n```bash\n# In-progress items — should any be completed?\nhyalo find --property status=in-progress --fields properties --jq '.results | map({file, date: .properties.date, branch: .properties.branch})'\n\n# Planned items where all tasks are done\nhyalo find --property status=planned --fields tasks --jq '.results | map(select((.tasks | length > 0) and ([.tasks[] | select(.status != \"x\")] | length) == 0)) | map(.file)'\n\n# In-progress items sorted by date (oldest first — possibly stale)\nhyalo find --property status=in-progress --fields properties --jq '.results | map(select(.properties.date != null)) | sort_by(.properties.date) | map({file, date: .properties.date})'\n```\nCross-reference with git merges from Phase 2. If the branch was merged, update status.\n\n### Stale backlog items\n```bash\nhyalo find --property status=planned --property type=backlog --jq '.results | map({file, title})'\n```\nCompare each planned backlog item against merged iterations and recent git history.\nIf the feature clearly shipped (in a different iteration or under a different name),\nflag it.\n\n### Missing metadata\n```bash\nhyalo find --property '!status' --jq '.results | map(.file)'\nhyalo find --property '!type' --jq '.results | map(.file)'\n```\n\n### Tag inconsistencies\nReview the `hyalo tags summary` output from Phase 1. Look for near-duplicates:\nsingular\u002Fplural (`filter`\u002F`filters`), hyphenation variants (`bugfix`\u002F`bug-fix`),\nabbreviations (`perf`\u002F`performance`). The canonical form should be the one used by\nmore files.\n\n### Task completion vs status mismatch\nThe `HYALO002` rule from the lint pass already flags `status: completed` files with\nopen tasks (fires only when `[schema.types.*].properties.status` is declared as an enum\ncontaining `\"completed\"`). If you want a per-file breakdown with open\u002Ftotal counts, use this inline query:\n```bash\nhyalo find --property status=completed --task todo --fields tasks --jq '.results | map({file, open: ([.tasks[] | select(.status != \"x\")] | length), total: (.tasks | length)})'\n```\nIf many completed items have unchecked tasks, this is a workflow pattern — note it once\nin the report rather than listing every file.\n\n## Phase 4 — Consolidate\n\nApply these changes only within an authorized repair request. For an audit,\nreport the proposed changes. Be conservative — prefer fixing metadata over deleting files. For\neach change, note what you did and why.\n\nFor repair runs without Jev, add `--index` to mutations to keep the snapshot\ncurrent. Jev-assisted repairs omit it from every command. Audits propose changes\nwithout applying them; neither audits nor Jev runs create or remove indexes.\n\n### Fix lint violations\nIf lint reported fixable violations in Phase 3, auto-fix them. `--fix` covers both\npasses — frontmatter (defaults, typos, dates, types) and body (e.g. `HYALO001` bare\nbrackets, trailing whitespace). Always preview with `--dry-run` first:\n```bash\nhyalo lint --fix --dry-run --format text\nhyalo lint --fix --format text\n```\n\nIf you only want to fix specific rules (e.g. body fixes only, leaving frontmatter\nalone), use `--fix-rule` or `--rule-prefix HYALO` — see `hyalo lint --help`.\n\nUnfixable violations (missing required properties, open tasks under `HYALO002`) are\nreported in Phase 5 for human attention.\n\n### Fix broken links\nUse `hyalo links fix` to auto-repair broken links. It uses fuzzy matching to find the\ncorrect target (handles moves to `done\u002F`, case changes, extension mismatches, etc.).\n\n```bash\n# Preview what will be fixed\nhyalo links fix --format text\n\n# Apply fixes\nhyalo links fix --apply --format text\n```\n\nReview the dry-run output first. For any links it can't resolve (reported as unfixable),\nleave them and report them in Phase 5.\n\n### Update stale statuses\nIf an iteration's branch was merged:\n```bash\nhyalo set \u003Cpath> --property status=completed --format text\n```\n\nIf a backlog item's feature clearly shipped:\n```bash\nhyalo set \u003Cpath> --property status=completed --format text\n```\n\nOnly update when the evidence is clear. When uncertain, flag it in the report.\n\n### Archive completed items\nIf completed items are in a top-level directory and a `done\u002F` subfolder exists:\n```bash\nhyalo mv \u003Cold-path> --to \u003Cdone-subdir\u002Ffilename> --dry-run --format text\n```\nReview the dry-run output. If correct, execute without `--dry-run`.\n\n### Normalize tags\n```bash\nhyalo tags rename --from \u003Cvariant> --to \u003Ccanonical> --format text\n```\n\n### Add missing cross-references\nIf a backlog item was implemented by an iteration but neither links to the other,\nadd a `[[wikilink]]`. Only where the relationship is clear and useful.\n\n## Phase 5 — Report\n\nSummarize everything. Structure as:\n\n### Changes made\nOne line per change with reasoning:\n```\n- Set status=completed on iteration-43.md (branch iter-43\u002Fdata-quality merged in abc1234)\n- Moved iteration-46.md to iterations\u002Fdone\u002F (completed, all tasks verified)\n- Renamed tag: bugfix → bug-fix (2 files, matching existing convention)\n- Fixed 5 broken links in research\u002Fdogfooding-v0.4.1-consolidated.md (same-dir targets)\n```\n\n### Issues requiring human attention\nThings you detected but couldn't (or shouldn't) fix unilaterally. Keep it concise —\none line per issue with enough context to act on.\n\nIf a single lint rule produced an outsized share of the noise (or if a rule fired only\non legitimate exceptions), suggest tuning it via `hyalo lint-rules` rather than\nsilently leaving the warnings in place.\n\n### KB health dashboard\nRe-run `hyalo summary --format text` (fresh scan after mutations — no `--index`) and compare with\nPhase 1 baseline. Report the delta: statuses changed, links fixed, tags normalized,\nfiles moved.\n\n## Ground rules\n\n- **Conservative by default**: when in doubt, report rather than change.\n- **Never delete files or body content**: update frontmatter, fix links, move files,\n  suggest changes — but the user decides what to throw away.\n- **Explain every change**: include the evidence (commit hash, task counts, etc.).\n- **Don't modify Claude's memory files**: report stale memories but don't edit them.\n- **Use hyalo for mutations**: `hyalo set`\u002F`remove` for frontmatter, `hyalo tags rename`\n  for tags, `hyalo mv` for moves. Fall back to Edit only for body content (fixing\n  wikilink text in prose, adding cross-reference lines).\n- **Batch similar findings**: if 15 completed items have unchecked tasks, say that once\n  with the count. The report should be scannable in 30 seconds.\n- **Minimize disk scans in repair runs without Jev**: use `--index` for queries and mutations.\n  Mutations automatically patch the index in-place — no need to drop and recreate.\n  Only drop the index at the very end when the session is complete.\n",{"name":5,"context":46,"description":47,"user_invocable":42,"disable-model-invocation":48},"fork","Perform a reflective consolidation pass over a hyalo-managed knowledgebase directory — detecting structural issues, fixing broken links, flagging stale content, normalizing metadata, and reporting what changed. Use this skill when the user says \u002Fhyalo-tidy, \"consolidate the knowledgebase\", \"clean up the KB\", \"run KB hygiene\", \"tidy\", or \"what needs attention in the knowledgebase\". Also use when the user asks about knowledgebase health, broken links, orphan files, stale iterations, or metadata inconsistencies.\n",true,"main","e6ec4173f18cc4a0ed1e36eb19ef6ebdc19b8f02","crates\u002Fhyalo-cli\u002Ftemplates\u002Fpi\u002Fskills\u002Fhyalo-tidy",2,"https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo","https:\u002F\u002Fgithub.com\u002Fractive","https:\u002F\u002Fractive.ch","2026-11-12 19:29:25",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":48},[59,62,65],{"tool":60,"command":61},"npx","npx skills add ractive\u002Fhyalo --skill hyalo-tidy",{"tool":63,"command":64},"bunx","bunx skills add ractive\u002Fhyalo --skill hyalo-tidy",{"tool":66,"command":67},"pnpm","pnpm dlx skills add ractive\u002Fhyalo --skill hyalo-tidy","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo\u002Fblob\u002Fmain\u002Fcrates\u002Fhyalo-cli\u002Ftemplates\u002Fpi\u002Fskills\u002Fhyalo-tidy\u002FSKILL.md",[],[71,83,105,123,140,154],{"skillNo":72,"name":5,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":41},"01M6H1GJ8EK138Y9VRGMD0ZXWC","Audit or tidy a Hyalo knowledgebase for broken links, orphan documents, stale content, and inconsistent metadata.","https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo\u002Fblob\u002Fmain\u002Fplugins\u002Fhyalo\u002Fskills\u002Fhyalo-tidy\u002FSKILL.md",[],[19,21,20,77,25,29,78,37,79,80,81,82],"for","stale","audit","metadata","content","documents",{"skillNo":84,"name":19,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":93,"publishedAt":41},"01M6H1GNEXF2BA4DDAB7FSGGFE","Search and edit structured markdown knowledgebases with the Hyalo CLI: frontmatter, tags, tasks, links, and document structure.","https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo\u002Fblob\u002Fmain\u002Fplugins\u002Fhyalo\u002Fskills\u002Fhyalo\u002FSKILL.md",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[19,94,95,96,97,98,99,100,101,102,103,25,104],"cli","tasks","search","markdown","edit","document","structure","structured","tags","with","frontmatter",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":114,"publishedAt":41},"01M6H1GEPA24F7PF5RQFHX3GXY","hyalo-skills","Validate and maintain Agent Skills collections using Hyalo's skills profile, including Codex and Claude skill directories.","https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo\u002Fblob\u002Fmain\u002Fplugins\u002Fhyalo\u002Fskills\u002Fhyalo-skills\u002FSKILL.md",[111],{"categoryNo":112,"categoryName":113,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000023","Skill与智能体开发",[115,19,116,117,118,119,120,121,122],"hyalo skills","directories","maintain","collections","codex","validate","profile","claude skill",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":41},"01M6H1G8ZJJYJW7T7TN9S1VXKZ","hyalo-okf","Maintain Open Knowledge Format vaults with Hyalo's OKF index, log, and conformance commands.","https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo\u002Fblob\u002Fmain\u002Fplugins\u002Fhyalo\u002Fskills\u002Fhyalo-okf\u002FSKILL.md",[],[19,130,131,132,133,134,135,136,117,137,138,103,139],"hyalo okf","okf","index","open","knowledge","format","log","vaults","commands","conformance",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":41},"01M6H1G5SPS4RN422EWZYP5VJX","hyalo-madr","Maintain Markdown Architecture Decision Records with Hyalo's MADR profile and table-of-contents commands.","https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo\u002Fblob\u002Fmain\u002Fplugins\u002Fhyalo\u002Fskills\u002Fhyalo-madr\u002FSKILL.md",[],[147,19,148,97,149,150,121,117,138,151,103,152,153],"hyalo madr","architecture decision records","table","decision","records","architecture decision","architecture",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":41},"01M6H1G17683QH3EZT06SX075Q","hyalo-changelog","Maintain Keep a Changelog files with Hyalo's changelog profile and add\u002Frelease commands.","https:\u002F\u002Fgithub.com\u002Fractive\u002Fhyalo\u002Fblob\u002Fmain\u002Fplugins\u002Fhyalo\u002Fskills\u002Fhyalo-changelog\u002FSKILL.md",[],[161,19,162,117,138,163,34,121,103,164,165],"changelog","hyalo changelog","add","release","keep"]