[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70FW75P9SEH28NWR115GZNN":3,"skill-same:01M70FW75P9SEH28NWR115GZNN":63},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M70FW75P9SEH28NWR115GZNN","obsidian-bases",null,"Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.","JayJiangCT\u002Fknowlery","JayJiangCT","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F59813406?v=4","01M70FV52GQJT4F12FBSYG48R2","Jay Jiang","01M70FV536R3NCMG5ZB0TMEWNP",15,"MIT","https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fobsidian-bases\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"obsidian bases","bases","obsidian","table","user","base","edit","summaries","notes","create","with","when","database","use","filters","files","card","formulas","2026-11-10 10:12:30",false,"---\nname: obsidian-bases\ndescription: Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.\n---\n\n# Obsidian Bases Skill\n\n## Workflow\n\n1. **Create the file**: Create a `.base` file in the vault with valid YAML content\n2. **Define scope**: Add `filters` to select which notes appear (by tag, folder, property, or date)\n3. **Add formulas** (optional): Define computed properties in the `formulas` section\n4. **Configure views**: Add one or more views (`table`, `cards`, `list`, or `map`) with `order` specifying which properties to display\n5. **Validate**: Verify the file is valid YAML with no syntax errors. Check that all referenced properties and formulas exist.\n6. **Test in Obsidian**: Open the `.base` file in Obsidian to confirm the view renders correctly.\n\n## Schema\n\nBase files use the `.base` extension and contain valid YAML.\n\n```yaml\n# Global filters apply to ALL views in the base\nfilters:\n  and: []\n  or: []\n  not: []\n\n# Define formula properties that can be used across all views\nformulas:\n  formula_name: 'expression'\n\n# Configure display names and settings for properties\nproperties:\n  property_name:\n    displayName: \"Display Name\"\n  formula.formula_name:\n    displayName: \"Formula Display Name\"\n\n# Define one or more views\nviews:\n  - type: table | cards | list | map\n    name: \"View Name\"\n    limit: 10\n    groupBy:\n      property: property_name\n      direction: ASC | DESC\n    filters:\n      and: []\n    order:\n      - file.name\n      - property_name\n      - formula.formula_name\n```\n\n## Filter Syntax\n\n```yaml\n# Single filter\nfilters: 'status == \"done\"'\n\n# AND - all conditions must be true\nfilters:\n  and:\n    - 'status == \"done\"'\n    - 'priority > 3'\n\n# OR - any condition can be true\nfilters:\n  or:\n    - 'file.hasTag(\"book\")'\n    - 'file.hasTag(\"article\")'\n```\n\n## Formula Syntax\n\n```yaml\nformulas:\n  status_icon: 'if(done, \"✅\", \"⏳\")'\n  days_old: '(now() - file.ctime).days'\n  days_until_due: 'if(due_date, (date(due_date) - today()).days, \"\")'\n```\n\n## YAML Quoting Rules\n\n- Use single quotes for formulas containing double quotes: `'if(done, \"Yes\", \"No\")'`\n- Use double quotes for simple strings: `\"My View Name\"`\n\n## Troubleshooting\n\n**Duration math**: Subtracting dates returns a Duration, not a number. Always access `.days`, `.hours`, etc.\n\n```yaml\n# CORRECT\n\"(now() - file.ctime).days.round(0)\"\n```\n\n**Missing null checks**: Use `if()` to guard optional properties.\n\n## References\n\n- [Bases Syntax](https:\u002F\u002Fhelp.obsidian.md\u002Fbases\u002Fsyntax)\n- [Functions](https:\u002F\u002Fhelp.obsidian.md\u002Fbases\u002Ffunctions)\n- [Views](https:\u002F\u002Fhelp.obsidian.md\u002Fbases\u002Fviews)\n","# Obsidian Bases Skill\n\n## Workflow\n\n1. **Create the file**: Create a `.base` file in the vault with valid YAML content\n2. **Define scope**: Add `filters` to select which notes appear (by tag, folder, property, or date)\n3. **Add formulas** (optional): Define computed properties in the `formulas` section\n4. **Configure views**: Add one or more views (`table`, `cards`, `list`, or `map`) with `order` specifying which properties to display\n5. **Validate**: Verify the file is valid YAML with no syntax errors. Check that all referenced properties and formulas exist.\n6. **Test in Obsidian**: Open the `.base` file in Obsidian to confirm the view renders correctly.\n\n## Schema\n\nBase files use the `.base` extension and contain valid YAML.\n\n```yaml\n# Global filters apply to ALL views in the base\nfilters:\n  and: []\n  or: []\n  not: []\n\n# Define formula properties that can be used across all views\nformulas:\n  formula_name: 'expression'\n\n# Configure display names and settings for properties\nproperties:\n  property_name:\n    displayName: \"Display Name\"\n  formula.formula_name:\n    displayName: \"Formula Display Name\"\n\n# Define one or more views\nviews:\n  - type: table | cards | list | map\n    name: \"View Name\"\n    limit: 10\n    groupBy:\n      property: property_name\n      direction: ASC | DESC\n    filters:\n      and: []\n    order:\n      - file.name\n      - property_name\n      - formula.formula_name\n```\n\n## Filter Syntax\n\n```yaml\n# Single filter\nfilters: 'status == \"done\"'\n\n# AND - all conditions must be true\nfilters:\n  and:\n    - 'status == \"done\"'\n    - 'priority > 3'\n\n# OR - any condition can be true\nfilters:\n  or:\n    - 'file.hasTag(\"book\")'\n    - 'file.hasTag(\"article\")'\n```\n\n## Formula Syntax\n\n```yaml\nformulas:\n  status_icon: 'if(done, \"✅\", \"⏳\")'\n  days_old: '(now() - file.ctime).days'\n  days_until_due: 'if(due_date, (date(due_date) - today()).days, \"\")'\n```\n\n## YAML Quoting Rules\n\n- Use single quotes for formulas containing double quotes: `'if(done, \"Yes\", \"No\")'`\n- Use double quotes for simple strings: `\"My View Name\"`\n\n## Troubleshooting\n\n**Duration math**: Subtracting dates returns a Duration, not a number. Always access `.days`, `.hours`, etc.\n\n```yaml\n# CORRECT\n\"(now() - file.ctime).days.round(0)\"\n```\n\n**Missing null checks**: Use `if()` to guard optional properties.\n\n## References\n\n- [Bases Syntax](https:\u002F\u002Fhelp.obsidian.md\u002Fbases\u002Fsyntax)\n- [Functions](https:\u002F\u002Fhelp.obsidian.md\u002Fbases\u002Ffunctions)\n- [Views](https:\u002F\u002Fhelp.obsidian.md\u002Fbases\u002Fviews)\n",{"name":5,"description":7},"main","0e53802c0c332ab23445b83651f15999e1ac89b8","plugin\u002Fskills\u002Fobsidian-bases",1,"https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery","https:\u002F\u002Fgithub.com\u002FJayJiangCT","2026-11-09 16:04:29",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add JayJiangCT\u002Fknowlery --skill obsidian-bases",{"tool":55,"command":56},"bunx","bunx skills add JayJiangCT\u002Fknowlery --skill obsidian-bases",{"tool":58,"command":59},"pnpm","pnpm dlx skills add JayJiangCT\u002Fknowlery --skill obsidian-bases","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fobsidian-bases\u002FSKILL.md",true,[],[64,79,98,115,146,173],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":37},"01M70FWHK80WMW5C9Y12KEZ8RG","vault-conventions","Use when creating or modifying notes in a Knowlery-structured vault. Enforces frontmatter requirements, wikilinks, and naming conventions.","https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fvault-conventions\u002FSKILL.md",[],[71,72,73,27,74,32,75,30,76,77,78],"vault","vault conventions","conventions","naming","naming conventions","frontmatter","requirements","structured",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":37},"01M70FWF616X3Z6BPPW6A96VHT","organize","Directory organization based on frontmatter metadata. Suggests and applies file moves to keep the vault structured. Use when the user wants to reorganize notes, fix directory placement, clean up the vault structure, or says anything like \"organize my notes\", \"clean up the vault\", \"move files to the right folders\", \"tidy up\", or \"restructure my notes\".","https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Forganize\u002FSKILL.md",[],[81,86,87,88,89,90,34,32,30,91,92,27,93,71,94,95,96,76,23,97],"move","up","fix","clean","tidy","keep","file","structure","organization","directory","my","metadata",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":109,"publishedAt":37},"01M70FWC3VG73VJD8C56SEPM3X","obsidian-markdown","Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.","https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fobsidian-markdown\u002FSKILL.md",[104],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[21,110,111,34,32,30,112,29,28,27,113,25,114,76,23],"obsidian markdown","markdown","tags","properties","syntax",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":129,"publishedAt":37},"01M70FW95K6BD12KQERZS0FWHW","obsidian-cli","Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.","https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fobsidian-cli\u002FSKILL.md",[121,126],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":127,"categoryName":128,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000036","内容创作者",[21,130,131,132,133,134,135,30,136,28,27,137,138,139,140,141,142,143,144,145],"cli","obsidian cli","inspect","search","errors","themes","tasks","command","run","line","read","commands","take","vaults","screenshots","theme",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":155,"publishedAt":37},"01M70FW4ASRQ42NW1AC0AAWWAC","knowlery-mcp","Work a Knowlery knowledge base through its MCP tools — choose the right tool for the job, run the capture-to-cook loop, and behave well while doing it. Use when Knowlery MCP tools (query, capture, stale, health, init_kb, register_kb, sync, list_kbs, list_bundles) are available in the session, especially in clients without a shell.","https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fknowlery-mcp\u002FSKILL.md",[152],{"categoryNo":153,"categoryName":154,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000023","Skill与智能体开发",[156,157,158,159,160,161,162,163,164,165,166,32,167,30,168,169,170,171,138,172],"knowlery mcp","MCP","kb","register","for","choose","session","tool","behave","init","knowledge","loop","query","health","knowledge base","work","shell",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":37},"01M70FW1DAYXG7MFZAA5NWYHT9","knowlery-cli","Manage a Knowlery knowledge base from the command line with the standalone knowlery CLI — initialize and sync workspaces, run health checks, query knowledge, detect stale pages, and install, export, and review knowledge bundles. Use when the user asks to operate their knowledge base headlessly (without Obsidian), share knowledge as a bundle, install a bundle someone shared, or verify the workspace after bulk changes.","https:\u002F\u002Fgithub.com\u002FJayJiangCT\u002Fknowlery\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fknowlery-cli\u002FSKILL.md",[],[180,130,181,182,183,184,185,186,187,188,21,189,166,32,30,168,190,191,169,29],"knowlery cli","shared","bulk","as","operate","initialize","standalone","manage","workspaces","pages","review","share"]