[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F89G172P1PWN031AC8JBTM":3,"skill-same:01M6F89G172P1PWN031AC8JBTM":77},{"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":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6F89G172P1PWN031AC8JBTM","obsidian-hello-world",null,"Create a minimal working Obsidian plugin with commands and settings.\nUse when building your first plugin feature, testing your setup,\nor learning basic Obsidian plugin patterns.\nTrigger with phrases like \"obsidian hello world\", \"first obsidian plugin\",\n\"obsidian quick start\", \"simple obsidian plugin\".","Dicklesworthstone\u002Fpi_agent_rust","Dicklesworthstone","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35050222?v=4","01M6CG26AR942CSVMN1M5E3DSE","Jeff Emanuel","01M6CG26EPP71PSHW1VDS71121",1979,"MIT","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fobsidian-pack\u002Fskills\u002Fobsidian-hello-world\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"hello world","obsidian","hello","obsidian hello world","world","when","testing","quick","quick start","trigger","io","basic","feature","commands","patterns","edit","write","read","learning","start","create","2026-11-10 10:12:30",false,"---\nname: obsidian-hello-world\ndescription: |\n  Create a minimal working Obsidian plugin with commands and settings.\n  Use when building your first plugin feature, testing your setup,\n  or learning basic Obsidian plugin patterns.\n  Trigger with phrases like \"obsidian hello world\", \"first obsidian plugin\",\n  \"obsidian quick start\", \"simple obsidian plugin\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\n---\n\n# Obsidian Hello World\n\n## Overview\nBuild a minimal working Obsidian plugin demonstrating core features: commands, settings, and ribbon icons.\n\n## Prerequisites\n- Completed `obsidian-install-auth` setup\n- Development vault configured\n- Build pipeline working\n\n## Instructions\n\n### Step 1: Create Main Plugin Class\n```typescript\n\u002F\u002F src\u002Fmain.ts\nimport { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting } from 'obsidian';\n\ninterface MyPluginSettings {\n  greeting: string;\n}\n\nconst DEFAULT_SETTINGS: MyPluginSettings = {\n  greeting: 'Hello, Obsidian!'\n}\n\nexport default class MyPlugin extends Plugin {\n  settings: MyPluginSettings;\n\n  async onload() {\n    await this.loadSettings();\n\n    \u002F\u002F Add ribbon icon\n    this.addRibbonIcon('dice', 'Greet Me', (evt: MouseEvent) => {\n      new Notice(this.settings.greeting);\n    });\n\n    \u002F\u002F Add command to command palette\n    this.addCommand({\n      id: 'show-greeting',\n      name: 'Show Greeting',\n      callback: () => {\n        new Notice(this.settings.greeting);\n      }\n    });\n\n    \u002F\u002F Add command with editor context\n    this.addCommand({\n      id: 'insert-greeting',\n      name: 'Insert Greeting at Cursor',\n      editorCallback: (editor: Editor, view: MarkdownView) => {\n        editor.replaceSelection(this.settings.greeting);\n      }\n    });\n\n    \u002F\u002F Add settings tab\n    this.addSettingTab(new MySettingTab(this.app, this));\n  }\n\n  onunload() {\n    console.log('Goodbye from My Plugin!');\n  }\n\n  async loadSettings() {\n    this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());\n  }\n\n  async saveSettings() {\n    await this.saveData(this.settings);\n  }\n}\n```\n\n### Step 2: Create Settings Tab\n```typescript\n\u002F\u002F Add to src\u002Fmain.ts\nclass MySettingTab extends PluginSettingTab {\n  plugin: MyPlugin;\n\n  constructor(app: App, plugin: MyPlugin) {\n    super(app, plugin);\n    this.plugin = plugin;\n  }\n\n  display(): void {\n    const { containerEl } = this;\n    containerEl.empty();\n\n    containerEl.createEl('h2', { text: 'My Plugin Settings' });\n\n    new Setting(containerEl)\n      .setName('Greeting')\n      .setDesc('The message to display when greeting')\n      .addText(text => text\n        .setPlaceholder('Enter your greeting')\n        .setValue(this.plugin.settings.greeting)\n        .onChange(async (value) => {\n          this.plugin.settings.greeting = value;\n          await this.plugin.saveSettings();\n        }));\n  }\n}\n```\n\n### Step 3: Create a Modal\n```typescript\n\u002F\u002F Add to src\u002Fmain.ts\nclass GreetingModal extends Modal {\n  greeting: string;\n\n  constructor(app: App, greeting: string) {\n    super(app);\n    this.greeting = greeting;\n  }\n\n  onOpen() {\n    const { contentEl } = this;\n    contentEl.createEl('h1', { text: this.greeting });\n    contentEl.createEl('p', { text: 'Click outside or press Escape to close.' });\n  }\n\n  onClose() {\n    const { contentEl } = this;\n    contentEl.empty();\n  }\n}\n\n\u002F\u002F Add to onload():\nthis.addCommand({\n  id: 'show-greeting-modal',\n  name: 'Show Greeting Modal',\n  callback: () => {\n    new GreetingModal(this.app, this.settings.greeting).open();\n  }\n});\n```\n\n### Step 4: Build and Test\n```bash\n# Build the plugin\nnpm run build\n\n# In Obsidian:\n# 1. Open Settings > Community plugins\n# 2. Enable \"My Plugin\"\n# 3. Click the dice icon in ribbon\n# 4. Open command palette (Ctrl\u002FCmd+P) and search \"Show Greeting\"\n```\n\n## Output\n- Working plugin with:\n  - Ribbon icon that shows a notice\n  - Commands in command palette\n  - Editor command to insert text\n  - Settings tab to configure greeting\n  - Modal for displaying content\n\n## Error Handling\n| Error | Cause | Solution |\n|-------|-------|----------|\n| Plugin not loading | Build errors | Check console for TypeScript errors |\n| Settings not saving | Missing loadData\u002FsaveData | Verify async\u002Fawait usage |\n| Command not showing | Plugin not enabled | Enable in Community Plugins |\n| Ribbon icon missing | Wrong icon name | Use valid Lucide icon name |\n\n## Examples\n\n### Available Icon Names\nObsidian uses Lucide icons. Common examples:\n- `file-text`, `folder`, `search`, `settings`\n- `star`, `heart`, `bookmark`, `tag`\n- `edit`, `trash`, `copy`, `clipboard`\n- `link`, `external-link`, `globe`\n- `dice`, `bot`, `sparkles`, `wand`\n\n### Status Bar Item\n```typescript\n\u002F\u002F Add to onload():\nconst statusBarItem = this.addStatusBarItem();\nstatusBarItem.setText('Plugin Active');\n```\n\n### Register Event Listeners\n```typescript\n\u002F\u002F Listen to file open\nthis.registerEvent(\n  this.app.workspace.on('file-open', (file) => {\n    if (file) {\n      console.log('Opened:', file.path);\n    }\n  })\n);\n```\n\n## Resources\n- [Obsidian Plugin API](https:\u002F\u002Fdocs.obsidian.md\u002FReference\u002FTypeScript+API)\n- [Lucide Icons](https:\u002F\u002Flucide.dev\u002Ficons\u002F)\n- [Obsidian Hub](https:\u002F\u002Fpublish.obsidian.md\u002Fhub\u002F)\n\n## Next Steps\nProceed to `obsidian-local-dev-loop` for hot-reload development workflow.\n","# Obsidian Hello World\n\n## Overview\nBuild a minimal working Obsidian plugin demonstrating core features: commands, settings, and ribbon icons.\n\n## Prerequisites\n- Completed `obsidian-install-auth` setup\n- Development vault configured\n- Build pipeline working\n\n## Instructions\n\n### Step 1: Create Main Plugin Class\n```typescript\n\u002F\u002F src\u002Fmain.ts\nimport { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting } from 'obsidian';\n\ninterface MyPluginSettings {\n  greeting: string;\n}\n\nconst DEFAULT_SETTINGS: MyPluginSettings = {\n  greeting: 'Hello, Obsidian!'\n}\n\nexport default class MyPlugin extends Plugin {\n  settings: MyPluginSettings;\n\n  async onload() {\n    await this.loadSettings();\n\n    \u002F\u002F Add ribbon icon\n    this.addRibbonIcon('dice', 'Greet Me', (evt: MouseEvent) => {\n      new Notice(this.settings.greeting);\n    });\n\n    \u002F\u002F Add command to command palette\n    this.addCommand({\n      id: 'show-greeting',\n      name: 'Show Greeting',\n      callback: () => {\n        new Notice(this.settings.greeting);\n      }\n    });\n\n    \u002F\u002F Add command with editor context\n    this.addCommand({\n      id: 'insert-greeting',\n      name: 'Insert Greeting at Cursor',\n      editorCallback: (editor: Editor, view: MarkdownView) => {\n        editor.replaceSelection(this.settings.greeting);\n      }\n    });\n\n    \u002F\u002F Add settings tab\n    this.addSettingTab(new MySettingTab(this.app, this));\n  }\n\n  onunload() {\n    console.log('Goodbye from My Plugin!');\n  }\n\n  async loadSettings() {\n    this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());\n  }\n\n  async saveSettings() {\n    await this.saveData(this.settings);\n  }\n}\n```\n\n### Step 2: Create Settings Tab\n```typescript\n\u002F\u002F Add to src\u002Fmain.ts\nclass MySettingTab extends PluginSettingTab {\n  plugin: MyPlugin;\n\n  constructor(app: App, plugin: MyPlugin) {\n    super(app, plugin);\n    this.plugin = plugin;\n  }\n\n  display(): void {\n    const { containerEl } = this;\n    containerEl.empty();\n\n    containerEl.createEl('h2', { text: 'My Plugin Settings' });\n\n    new Setting(containerEl)\n      .setName('Greeting')\n      .setDesc('The message to display when greeting')\n      .addText(text => text\n        .setPlaceholder('Enter your greeting')\n        .setValue(this.plugin.settings.greeting)\n        .onChange(async (value) => {\n          this.plugin.settings.greeting = value;\n          await this.plugin.saveSettings();\n        }));\n  }\n}\n```\n\n### Step 3: Create a Modal\n```typescript\n\u002F\u002F Add to src\u002Fmain.ts\nclass GreetingModal extends Modal {\n  greeting: string;\n\n  constructor(app: App, greeting: string) {\n    super(app);\n    this.greeting = greeting;\n  }\n\n  onOpen() {\n    const { contentEl } = this;\n    contentEl.createEl('h1', { text: this.greeting });\n    contentEl.createEl('p', { text: 'Click outside or press Escape to close.' });\n  }\n\n  onClose() {\n    const { contentEl } = this;\n    contentEl.empty();\n  }\n}\n\n\u002F\u002F Add to onload():\nthis.addCommand({\n  id: 'show-greeting-modal',\n  name: 'Show Greeting Modal',\n  callback: () => {\n    new GreetingModal(this.app, this.settings.greeting).open();\n  }\n});\n```\n\n### Step 4: Build and Test\n```bash\n# Build the plugin\nnpm run build\n\n# In Obsidian:\n# 1. Open Settings > Community plugins\n# 2. Enable \"My Plugin\"\n# 3. Click the dice icon in ribbon\n# 4. Open command palette (Ctrl\u002FCmd+P) and search \"Show Greeting\"\n```\n\n## Output\n- Working plugin with:\n  - Ribbon icon that shows a notice\n  - Commands in command palette\n  - Editor command to insert text\n  - Settings tab to configure greeting\n  - Modal for displaying content\n\n## Error Handling\n| Error | Cause | Solution |\n|-------|-------|----------|\n| Plugin not loading | Build errors | Check console for TypeScript errors |\n| Settings not saving | Missing loadData\u002FsaveData | Verify async\u002Fawait usage |\n| Command not showing | Plugin not enabled | Enable in Community Plugins |\n| Ribbon icon missing | Wrong icon name | Use valid Lucide icon name |\n\n## Examples\n\n### Available Icon Names\nObsidian uses Lucide icons. Common examples:\n- `file-text`, `folder`, `search`, `settings`\n- `star`, `heart`, `bookmark`, `tag`\n- `edit`, `trash`, `copy`, `clipboard`\n- `link`, `external-link`, `globe`\n- `dice`, `bot`, `sparkles`, `wand`\n\n### Status Bar Item\n```typescript\n\u002F\u002F Add to onload():\nconst statusBarItem = this.addStatusBarItem();\nstatusBarItem.setText('Plugin Active');\n```\n\n### Register Event Listeners\n```typescript\n\u002F\u002F Listen to file open\nthis.registerEvent(\n  this.app.workspace.on('file-open', (file) => {\n    if (file) {\n      console.log('Opened:', file.path);\n    }\n  })\n);\n```\n\n## Resources\n- [Obsidian Plugin API](https:\u002F\u002Fdocs.obsidian.md\u002FReference\u002FTypeScript+API)\n- [Lucide Icons](https:\u002F\u002Flucide.dev\u002Ficons\u002F)\n- [Obsidian Hub](https:\u002F\u002Fpublish.obsidian.md\u002Fhub\u002F)\n\n## Next Steps\nProceed to `obsidian-local-dev-loop` for hot-reload development workflow.\n",{"name":5,"author":50,"license":15,"version":51,"description":52,"allowed-tools":53},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Create a minimal working Obsidian plugin with commands and settings.\nUse when building your first plugin feature, testing your setup,\nor learning basic Obsidian plugin patterns.\nTrigger with phrases like \"obsidian hello world\", \"first obsidian plugin\",\n\"obsidian quick start\", \"simple obsidian plugin\".\n","Read, Write, Edit","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fobsidian-pack\u002Fskills\u002Fobsidian-hello-world",231,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust","https:\u002F\u002Fgithub.com\u002FDicklesworthstone","https:\u002F\u002Fwww.jeffreyemanuel.com\u002F","Building in NY","2026-11-11 01:23:40",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add Dicklesworthstone\u002Fpi_agent_rust --skill obsidian-hello-world",{"tool":69,"command":70},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill obsidian-hello-world",{"tool":72,"command":73},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill obsidian-hello-world","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fobsidian-pack\u002Fskills\u002Fobsidian-hello-world\u002FSKILL.md",true,[],[78,117,139,165,191,213],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":82,"licenseFileUrl":83,"sourceHtmlUrl":84,"categories":85,"keywords":89,"publishedAt":45},"01M6FEGPPK0ZTKCCM0R3E3KS33","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116],"web artifacts builder","web","artifacts","artifacts builder","builder","frontend","css","components","react","component","routing","state management","state","shadcn","file","ui","Tools","Tailwind","use","html","single-file","simple","ui components","multi","for","jsx","suite",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":82,"licenseFileUrl":121,"sourceHtmlUrl":122,"categories":123,"keywords":126,"publishedAt":45},"01M6FEE9VTK1W4GY21AKREJXRG","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[124,125],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},[30,127,128,95,129,130,91,131,132,133,105,134,135,136,137,138,114],"webapp testing","webapp","screenshots","playwright","debugging","toolkit","browser","logs","applications","behavior","local","with",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":143,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":45},"01M6FE20F7ZTQBFWKF4MPJ2SBX","neuropixels-analysis","Neuropixels neural recording analysis. Load SpikeGLX\u002FOpenEphys data, preprocess, motion correction, Kilosort4 spike sorting, quality metrics, Allen\u002FIBL curation, AI-assisted visual analysis, for Neuropixels 1.0\u002F2.0 extracellular electrophysiology. Use when working with neural recordings, spike sorting, extracellular electrophysiology, or when the user mentions Neuropixels, SpikeGLX, Open Ephys, Kilosort, quality metrics, or unit curation.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fneuropixels-analysis\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fneuropixels-analysis\u002FSKILL.md",[],[147,148,149,150,151,152,153,154,108,155,156,157,158,159,160,161,138,162,163,164,114,29],"analysis","neuropixels analysis","spike","metrics","data","open","quality","user","recordings","Neural","motion","visual","quality metrics","unit","sorting","curation","recording","load",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":82,"licenseFileUrl":169,"sourceHtmlUrl":170,"categories":171,"keywords":175,"publishedAt":45},"01M6FDP0PDK6F1GGX395C7625Z","skill-creator","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fskill-creator\u002FSKILL.md",[172],{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[176,177,178,44,179,180,181,182,183,184,185,186,187,188,138,114,189,29,190],"skill creator","creator","workflows","update","capabilities","knowledge","tool","integrations","specialized","guide","new skill","existing skill","users","Existing","new",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":195,"sourceHtmlUrl":196,"categories":197,"keywords":199,"publishedAt":45},"01M6FDM8Y7VK7NYG9SM7QPA3PW","notebooklm","Use this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-only responses.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fnotebooklm\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fnotebooklm\u002FSKILL.md",[198],{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},[193,200,201,202,203,204,205,133,206,207,108,208,209,210,211,114,212],"google","browser automation","gemini","automation","auth","code","library","management","only","document","query","Citation","source",{"skillNo":214,"name":215,"nameZh":6,"description":216,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":82,"licenseFileUrl":217,"sourceHtmlUrl":218,"categories":219,"keywords":226,"publishedAt":45},"01M6FDHPXE10J3XGTCH5HBHS1M","slack-gif-creator","Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like \"make me a GIF of X doing Y for Slack.\"","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fslack-gif-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fslack-gif-creator\u002FSKILL.md",[220,223],{"categoryNo":221,"categoryName":222,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":224,"categoryName":225,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[227,228,229,177,230,106,231,232,181,108,233,188,234,235,236,114,237,29],"slack gif creator","slack","gif","validation","constraints","Animation","me","make","Utilities","concepts","request"]