[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSN0XZVNHDN002Z4SWSEZM":3,"skill-same:01M6CSN0XZVNHDN002Z4SWSEZM":83},{"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":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":14,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":45,"updatedAt":46,"install":47,"resources":59},"01M6CSN0XZVNHDN002Z4SWSEZM","review-contradictions",null,"Use when the user wants to review conflicting notes, find inconsistencies in the vault, check for contradictions between knowledge claims, or inspect semantically-close notes that may conflict. Runs the per-pair evaluation loop to surface genuine contradictions and dismiss false positives.","ThatDevStudio\u002Fztlctl","ThatDevStudio","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F168217678?v=4","01M6CSMDK6RNT910MHNQ51PHAX","ThatDev Studio","01M6CSMDQ6BDK686J8ZEH97DVC",0,"MIT","https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Freview-contradictions\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"review","review contradictions","notes","Evaluation","vault","knowledge","loop","pair","find","check","user","use","2026-11-10 10:12:30",false,"---\nname: review-contradictions\ndescription: >\n  Use when the user wants to review conflicting notes, find inconsistencies in\n  the vault, check for contradictions between knowledge claims, or inspect\n  semantically-close notes that may conflict. Runs the per-pair evaluation loop\n  to surface genuine contradictions and dismiss false positives.\nversion: 1.0.0\ndisable-model-invocation: true\n---\n\n# Contradiction Review\n\nReview conflicting note pairs and confirm genuine contradictions as permanent\ngraph edges. This skill uses the Loop pattern: enumerate candidates, inspect\neach pair, propose a verdict, then wait for per-pair user approval before any\nwrite fires.\n\n## Iron Laws\n\n**NEVER auto-confirm contradictions.** Each pair requires explicit user approval\nbefore `confirm_contradiction` fires. Contradictions insert permanent bidirectional\ngraph edges — false positives corrupt the knowledge graph and are hard to undo.\n\n**Gracefully degrade if sqlite-vec is absent.** If `check_contradictions` returns\nan error mentioning sqlite-vec, surface: \"Semantic contradiction detection requires\nsqlite-vec. Install with: `uv add sqlite-vec`. Falling back to heuristic scoring.\"\nContinue with heuristic results — do not error out.\n\n**Check `result.success` after every MCP call.** Stop the loop and report progress\nif a call fails unexpectedly.\n\n## Workflow\n\n1. **Read `ztlctl:\u002F\u002Freview\u002Fcontradictions`** — load the current candidate list:\n   pending pairs with note IDs, similarity scores, and signals field (conflicting\n   phrases or claims extracted during detection).\n\n2. **If no candidates:** run `check_contradictions(max_pairs=20)` to generate a\n   fresh candidate set. Check `result.success` — surface any sqlite-vec error with\n   the install hint above. If candidates are still empty after detection, report\n   \"No contradiction candidates found. Vault claims appear consistent.\"\n\n3. **For each candidate pair (score > 0.5):**\n\n   a. **Fetch both notes in parallel:** `get_document(content_id=\"\u003Cnote_a>\")` and\n      `get_document(content_id=\"\u003Cnote_b>\")`. Check `result.success` on both.\n\n   b. **Evaluate the pair:** Do the notes make genuinely conflicting claims?\n      Check the `signals` field for specific conflicting phrases. Consider:\n      - Direct conflict: Note A asserts X, Note B asserts not-X\n      - Temporal context: is the newer note superseding (not contradicting) the older?\n      - Scope mismatch: is one claim specific and the other general (no contradiction)?\n\n   c. **Present verdict to user:**\n      - \"Genuine contradiction: [brief reason]. Confirm?\" — wait for approval\n      - \"False positive: [brief reason — compatible claims \u002F scope mismatch \u002F temporal supersession]. Dismiss?\"\n\n4. **On user approval:** `confirm_contradiction(note_a=\"\u003Ca>\", note_b=\"\u003Cb>\")`.\n   Check `result.success`. Report the inserted edge.\n\n5. **On user rejection:** note as false positive, move to next pair.\n\n6. **Report results** — pairs reviewed, genuine contradictions confirmed (with\n   IDs), false positives dismissed, pairs skipped (score ≤ 0.5).\n\n---\n\nSee `references\u002Fcontradiction-review.md` for scoring details, evaluation\ncriteria, and graceful degradation behavior.\n","# Contradiction Review\n\nReview conflicting note pairs and confirm genuine contradictions as permanent\ngraph edges. This skill uses the Loop pattern: enumerate candidates, inspect\neach pair, propose a verdict, then wait for per-pair user approval before any\nwrite fires.\n\n## Iron Laws\n\n**NEVER auto-confirm contradictions.** Each pair requires explicit user approval\nbefore `confirm_contradiction` fires. Contradictions insert permanent bidirectional\ngraph edges — false positives corrupt the knowledge graph and are hard to undo.\n\n**Gracefully degrade if sqlite-vec is absent.** If `check_contradictions` returns\nan error mentioning sqlite-vec, surface: \"Semantic contradiction detection requires\nsqlite-vec. Install with: `uv add sqlite-vec`. Falling back to heuristic scoring.\"\nContinue with heuristic results — do not error out.\n\n**Check `result.success` after every MCP call.** Stop the loop and report progress\nif a call fails unexpectedly.\n\n## Workflow\n\n1. **Read `ztlctl:\u002F\u002Freview\u002Fcontradictions`** — load the current candidate list:\n   pending pairs with note IDs, similarity scores, and signals field (conflicting\n   phrases or claims extracted during detection).\n\n2. **If no candidates:** run `check_contradictions(max_pairs=20)` to generate a\n   fresh candidate set. Check `result.success` — surface any sqlite-vec error with\n   the install hint above. If candidates are still empty after detection, report\n   \"No contradiction candidates found. Vault claims appear consistent.\"\n\n3. **For each candidate pair (score > 0.5):**\n\n   a. **Fetch both notes in parallel:** `get_document(content_id=\"\u003Cnote_a>\")` and\n      `get_document(content_id=\"\u003Cnote_b>\")`. Check `result.success` on both.\n\n   b. **Evaluate the pair:** Do the notes make genuinely conflicting claims?\n      Check the `signals` field for specific conflicting phrases. Consider:\n      - Direct conflict: Note A asserts X, Note B asserts not-X\n      - Temporal context: is the newer note superseding (not contradicting) the older?\n      - Scope mismatch: is one claim specific and the other general (no contradiction)?\n\n   c. **Present verdict to user:**\n      - \"Genuine contradiction: [brief reason]. Confirm?\" — wait for approval\n      - \"False positive: [brief reason — compatible claims \u002F scope mismatch \u002F temporal supersession]. Dismiss?\"\n\n4. **On user approval:** `confirm_contradiction(note_a=\"\u003Ca>\", note_b=\"\u003Cb>\")`.\n   Check `result.success`. Report the inserted edge.\n\n5. **On user rejection:** note as false positive, move to next pair.\n\n6. **Report results** — pairs reviewed, genuine contradictions confirmed (with\n   IDs), false positives dismissed, pairs skipped (score ≤ 0.5).\n\n---\n\nSee `references\u002Fcontradiction-review.md` for scoring details, evaluation\ncriteria, and graceful degradation behavior.\n",{"name":5,"version":36,"description":37,"disable-model-invocation":38},"1.0.0","Use when the user wants to review conflicting notes, find inconsistencies in the vault, check for contradictions between knowledge claims, or inspect semantically-close notes that may conflict. Runs the per-pair evaluation loop to surface genuine contradictions and dismiss false positives.\n",true,"develop","fa2801de39a8e8c3a55b0e0ea590781b326e226e","plugin\u002Fskills\u002Freview-contradictions","https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl","https:\u002F\u002Fgithub.com\u002FThatDevStudio","thatdev.io","ThatDev","2026-03-22 22:57:17",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":38},[49,52,55],{"tool":50,"command":51},"npx","npx skills add ThatDevStudio\u002Fztlctl --skill review-contradictions",{"tool":53,"command":54},"bunx","bunx skills add ThatDevStudio\u002Fztlctl --skill review-contradictions",{"tool":56,"command":57},"pnpm","pnpm dlx skills add ThatDevStudio\u002Fztlctl --skill review-contradictions","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Freview-contradictions\u002FSKILL.md",[60,65,71,75,79],{"path":61,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"LICENSE","许可证",1065,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-instrumentation\u002FLICENSE",{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fcontradiction-review.md","REFERENCE","参考文档",3167,"https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Freview-contradictions\u002Freferences\u002Fcontradiction-review.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"repos\u002Fmetamask-extension.md",3325,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-instrumentation\u002Frepos\u002Fmetamask-extension.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"SOURCE.md",372,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-instrumentation\u002FSOURCE.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"TRUST.auto.yaml",2197,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-instrumentation\u002FTRUST.auto.yaml",[84,99,116,133,151,164],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":31},"01M6CSNCEFP7TMHJH1RYE6HB6F","vault-methodology","Use when working in a ztlctl vault — creating notes, organizing knowledge, tagging, linking, or making decisions about content types and structure. Activates for any knowledge management task.","https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Fvault-methodology\u002FSKILL.md",[],[91,92,23,93,94,95,30,96,21,97,24,98],"vault methodology","methodology","structure","task","knowledge management","management","content","decisions",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":110,"publishedAt":31},"01M6CSNA9DPPRQTVRB3PK39S41","synthesize","Use when the user wants to synthesize scattered notes into a unified artifact, consolidate knowledge on a topic, connect existing notes, find structural gaps, or create a synthesis note. Activates on \"synthesize\", \"consolidate\", \"connect my notes on X\", \"summarize what I know about X\", \"find gaps in X\", or \"create synthesis\".","https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Fsynthesize\u002FSKILL.md",[105],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[101,27,111,21,112,113,24,29,30,114,115],"summarize","connect","create","Synthesis","artifact",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":31},"01M6CSN854VHN73TST01PPVXC7","session","Use when the user wants to start, begin, or open a work session, OR close, end, or finish an active session. Manages the full session lifecycle: pre-flight checks, polaris alignment, session start, and session close with enrichment pipeline.","https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Fsession\u002FSKILL.md",[],[118,123,30,124,125,126,127,29,128,129,130,131,132],"pipeline","finish","alignment","work session","session close","start","enrichment","lifecycle","open","work",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":143,"publishedAt":31},"01M6CSN5HMBGRHZBMY2ANS2YKP","session-workflow","Use when starting, running, or closing research sessions. Guides structured knowledge capture workflows: start → capture → synthesize → close.","https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Fsession-workflow\u002FSKILL.md",[139,140],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},{"categoryNo":141,"categoryName":142,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000023","Skill与智能体开发",[144,118,145,146,147,148,149,128,24,150,30],"session workflow","workflow","knowledge capture","research","workflows","sessions","capture",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":31},"01M6CSN2YMTDPQ96ZZ9JMS1XT0","review-triage","Use when the user asks to review the work queue, triage pending items, clear the backlog, or find out what needs attention in the vault. Surfaces prioritized actionable items and batch-processes approved updates.","https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Freview-triage\u002FSKILL.md",[],[158,19,159,160,161,23,132,27,29,30,162,163],"review triage","triage","backlog","batch","queue","surfaces",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":31},"01M6CSMZ62CPH0X9V78YF8S1XZ","orient","Use when entering a vault cold, starting any work, or needing to understand what is in the vault. Orients to vault identity, strategic priorities, and assembles topic-focused context. Activates on \"orient\", \"load context\", \"what is in the vault\", or \"vault status\".","https:\u002F\u002Fgithub.com\u002FThatDevStudio\u002Fztlctl\u002Fblob\u002Fdevelop\u002Fplugin\u002Fskills\u002Forient\u002FSKILL.md",[],[166,171,23,132,172,30,173,174],"identity","context","priorities","status"]