[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6FT301NEFTT5RSJK874N7":3,"skill-same:01M6C6FT301NEFTT5RSJK874N7":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6C6FT301NEFTT5RSJK874N7","webobsidian",null,"Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (\u002Fapi\u002Fv1). Use whenever the user asks to find, read, create, update, append to, or delete notes in their WebObsidian \u002F Obsidian vault, list tags, get backlinks, or run a vault search. Credentials (base URL + API key) are stored in ~\u002F.webobsidian\u002Fcredentials.json; if missing, ask the user for them and save them before making requests.","Allternit\u002Fallternit-platform","Allternit","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F250397232?v=4","01M6C67T2SPVP033M7REAAHYHX","01M6C67T7CXM1DKVQY8DFAFRB2",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Fservices\u002Fvault-viewer\u002Fdocs\u002Fagent-skill\u002Fwebobsidian\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"obsidian vault","URL","backlinks","get","use","append","list","write","read","ask","find","json","obsidian","save","api","credentials","vault","REST","search","update","run","delete","create","notes","2026-11-10 10:12:30",false,"---\nname: webobsidian\ndescription: \"Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (\u002Fapi\u002Fv1). Use whenever the user asks to find, read, create, update, append to, or delete notes in their WebObsidian \u002F Obsidian vault, list tags, get backlinks, or run a vault search. Credentials (base URL + API key) are stored in ~\u002F.webobsidian\u002Fcredentials.json; if missing, ask the user for them and save them before making requests.\"\n---\n\n# WebObsidian Agent skill\n\nOperate a [WebObsidian](https:\u002F\u002Fgithub.com\u002Fxnohat\u002Fwebobsidian) vault over its Agent REST\nAPI at `\u002Fapi\u002Fv1`. Everything is a plain HTTP call authenticated with an API key.\n\n## Credentials (read these first, every session)\n\nCredentials live in **`~\u002F.webobsidian\u002Fcredentials.json`**:\n\n```json\n{ \"baseUrl\": \"https:\u002F\u002Fyour-webobsidian.example.com\", \"apiKey\": \"wok_xxxxxxxx\" }\n```\n\n**Before the first request in a session**, load them into shell variables:\n\n```bash\nBASE=$(python3 -c 'import json,os;print(json.load(open(os.path.expanduser(\"~\u002F.webobsidian\u002Fcredentials.json\")))[\"baseUrl\"].rstrip(\"\u002F\"))')\nKEY=$(python3 -c 'import json,os;print(json.load(open(os.path.expanduser(\"~\u002F.webobsidian\u002Fcredentials.json\")))[\"apiKey\"])')\n```\n\nIf `~\u002F.webobsidian\u002Fcredentials.json` does **not** exist or a call returns **401**:\n\n1. Ask the user for their **WebObsidian base URL** (e.g. `https:\u002F\u002Fnotes.example.com` or\n   `http:\u002F\u002Fhost:8787`) and their **API key**. They create the key in the app at\n   **Settings → API Keys** (choose scopes `read` \u002F `write` \u002F `search`). Keys look like `wok_…`.\n2. Save it (never echo the key back):\n   ```bash\n   mkdir -p ~\u002F.webobsidian && chmod 700 ~\u002F.webobsidian\n   cat > ~\u002F.webobsidian\u002Fcredentials.json \u003C\u003CJSON\n   { \"baseUrl\": \"\u003CBASE_URL>\", \"apiKey\": \"\u003CAPI_KEY>\" }\n   JSON\n   chmod 600 ~\u002F.webobsidian\u002Fcredentials.json\n   ```\n3. Verify with the health + an authenticated call, then proceed.\n\n**Security rules:** never print, log, or commit the API key. Never write it into vault\nnotes. If a command would expose it, redact it.\n\n## Sanity check\n\n```bash\ncurl -s \"$BASE\u002Fapi\u002Fv1\u002Fhealth\"                          # liveness, no auth\ncurl -s -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Ftags\" | head # confirms the key works\n```\n\n## Authentication\n\nSend the key as a header on every `\u002Fapi\u002Fv1` request (either form works):\n\n```\nX-API-Key: wok_xxx\nAuthorization: Bearer wok_xxx\n```\n\nScopes per key: `read`, `write`, `search`. A call outside the key's scope returns `403`.\nRate-limited (default 120 req\u002Fmin\u002Fkey) → `429` when exceeded; back off and retry.\n\n## Endpoint reference\n\nAll `{path}` values are **vault-relative** and must be **URL-encoded** (`curl -G --data-urlencode`\nfor queries; encode `\u002F`-containing paths in the URL path, e.g. `Notes\u002FIdeas.md` →\n`Notes%2FIdeas.md` is accepted, plain `Notes\u002FIdeas.md` also works).\n\n| Method | Path | Scope | Description |\n|--------|------|-------|-------------|\n| GET | `\u002Fapi\u002Fv1\u002Fhealth` | – | Liveness check |\n| GET | `\u002Fapi\u002Fv1\u002Fnotes?offset=&limit=` | read | List markdown notes (paginated) |\n| GET | `\u002Fapi\u002Fv1\u002Fnotes\u002F{path}` | read | Read a note + parsed metadata |\n| PUT | `\u002Fapi\u002Fv1\u002Fnotes\u002F{path}` | write | Create \u002F overwrite a note — body `{\"content\":\"...\"}` |\n| PATCH | `\u002Fapi\u002Fv1\u002Fnotes\u002F{path}` | write | Append — body `{\"append\":\"...\"}` |\n| DELETE | `\u002Fapi\u002Fv1\u002Fnotes\u002F{path}` | write | Move note to trash |\n| GET | `\u002Fapi\u002Fv1\u002Fsearch?q=&limit=` | search | QMD search (fielded: `tag:`, `path:`, `title:`) |\n| GET | `\u002Fapi\u002Fv1\u002Fbacklinks?path=` | read | Notes linking to a path |\n| GET | `\u002Fapi\u002Fv1\u002Ftags` | read | All tags with counts |\n\n## Recipes\n\n```bash\n# List 10 notes\ncurl -s -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fnotes?limit=10\"\n\n# Read a note (URL-encode the path's query value if it has spaces\u002Fslashes)\ncurl -s -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fnotes\u002FWelcome.md\"\n\n# Create or overwrite a note\ncurl -s -X PUT -H \"X-API-Key: $KEY\" -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"content\":\"# Title\\n\\nBody written by the agent.\"}' \\\n  \"$BASE\u002Fapi\u002Fv1\u002Fnotes\u002FAgent\u002FGenerated.md\"\n\n# Append to a note (creates it if missing)\ncurl -s -X PATCH -H \"X-API-Key: $KEY\" -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"append\":\"\\n- another bullet\"}' \\\n  \"$BASE\u002Fapi\u002Fv1\u002Fnotes\u002FAgent\u002FGenerated.md\"\n\n# Delete a note (→ trash)\ncurl -s -X DELETE -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fnotes\u002FAgent\u002FGenerated.md\"\n\n# Full-text search (fielded queries supported)\ncurl -s -G -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fsearch\" \\\n  --data-urlencode \"q=tag:idea graph\" --data-urlencode \"limit=5\"\n\n# Backlinks for a note\ncurl -s -G -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fbacklinks\" --data-urlencode \"path=Welcome.md\"\n\n# All tags with counts\ncurl -s -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Ftags\"\n```\n\n## Response shapes\n\n```jsonc\n\u002F\u002F GET \u002Fapi\u002Fv1\u002Fnotes\u002F{path}\n{ \"path\": \"Welcome.md\", \"content\": \"...\", \"title\": \"Welcome\",\n  \"frontmatter\": { \"tags\": [\"welcome\"] }, \"tags\": [\"welcome\"], \"links\": [\"Notes\u002FIdeas\"] }\n\n\u002F\u002F GET \u002Fapi\u002Fv1\u002Fsearch\n{ \"query\": \"graph\", \"hits\": [\n  { \"path\": \"Notes\u002FIdeas.md\", \"title\": \"Ideas\", \"score\": 4.2, \"tags\": [\"idea\"], \"snippet\": \"…\" } ] }\n```\n\n## Obsidian Flavored Markdown (write notes in this dialect)\n\nThe vault is a real Obsidian vault — the user also opens these files in the Obsidian app,\nso write **Obsidian Flavored Markdown**, not plain Markdown. Use `[[wikilinks]]` for links\nbetween vault notes (Obsidian tracks renames); use `[text](url)` **only** for external URLs.\n\n### Properties (YAML frontmatter)\nAt the very top of the note, between `---` fences. Default keys: `tags`, `aliases`,\n`cssclasses`. Preserve existing frontmatter on overwrite.\n\n```markdown\n---\ntitle: My Note\ndate: 2024-01-15\ntags:\n  - project\n  - active\naliases:\n  - Alternative Name\n---\n```\n\n### Wikilinks (internal links)\n```markdown\n[[Note Name]]                 Link to a note\n[[Note Name|Display Text]]    Custom display text\n[[Note Name#Heading]]         Link to a heading\n[[Note Name#^block-id]]       Link to a block\n[[#Heading in same note]]     Same-note link\n```\n\n### Block references\nAppend `^block-id` to a paragraph; for lists\u002Fquotes put the id on its own line after the block.\n```markdown\nThis paragraph can be linked to. ^my-block-id\n```\n\n### Embeds \u002F transclusion (prefix a wikilink with `!`)\n```markdown\n![[Note Name]]                Embed a whole note\n![[Note Name#Heading]]        Embed one section\n![[image.png]]                Embed an image\n![[image.png|300]]            Embed with width\n![[document.pdf#page=3]]      Embed a PDF page\n```\n\n### Callouts\n```markdown\n> [!note]\n> Basic callout.\n\n> [!warning] Custom Title\n> Callout with a custom title.\n\n> [!faq]- Collapsed by default\n> Foldable callout (`-` starts collapsed, `+` starts expanded).\n```\nCommon types: `note`, `tip`, `info`, `warning`, `danger`, `success`, `failure`, `question`,\n`example`, `quote`, `bug`, `abstract`, `todo`.\n\n### Tags\n```markdown\n#tag            inline tag\n#nested\u002Ftag     hierarchical tag\n```\nLetters, digits (not first char), `_`, `-`, `\u002F`. Tags also go in frontmatter `tags:`.\n\n### Tasks\n```markdown\n- [ ] Pending task\n- [x] Completed task\n```\n\n### Other syntax\n```markdown\n==highlight==   **bold**   *italic*\nFootnote[^1].          [^1]: Footnote text.       Inline footnote.^[Inline text.]\nVisible %%hidden inline comment%% text.            $e^{i\\pi}+1=0$  (inline math)\n```\n````markdown\n$$\\frac{a}{b} = c$$         (block math, KaTeX)\n\n```mermaid\ngraph TD\n  A --> B\n```\n````\n\n## Editing rules\n\n- **Prefer `PATCH` append** over `PUT` when only adding content, so you don't clobber a note.\n- **Read before you overwrite** an existing note unless the user explicitly wants a fresh\n  replace; preserve its frontmatter and formatting.\n- Paths are **case-sensitive** and notes must include the `.md` extension.\n- When you reference another note, link it (`[[Other Note]]`) instead of writing a bare name —\n  it keeps the graph and backlinks intact.\n\n## Troubleshooting\n\n- `401` → key missing\u002Finvalid → re-run the credentials flow above.\n- `403` → the key lacks the required scope → ask the user to create a key with the needed\n  scope (`read`\u002F`write`\u002F`search`).\n- `404` on a note → wrong path\u002Fcasing, or it's in `.trash`.\n- `429` → rate limited → wait and retry.\n- Connection refused \u002F TLS error → confirm the base URL and that the server is reachable.\n","# WebObsidian Agent skill\n\nOperate a [WebObsidian](https:\u002F\u002Fgithub.com\u002Fxnohat\u002Fwebobsidian) vault over its Agent REST\nAPI at `\u002Fapi\u002Fv1`. Everything is a plain HTTP call authenticated with an API key.\n\n## Credentials (read these first, every session)\n\nCredentials live in **`~\u002F.webobsidian\u002Fcredentials.json`**:\n\n```json\n{ \"baseUrl\": \"https:\u002F\u002Fyour-webobsidian.example.com\", \"apiKey\": \"wok_xxxxxxxx\" }\n```\n\n**Before the first request in a session**, load them into shell variables:\n\n```bash\nBASE=$(python3 -c 'import json,os;print(json.load(open(os.path.expanduser(\"~\u002F.webobsidian\u002Fcredentials.json\")))[\"baseUrl\"].rstrip(\"\u002F\"))')\nKEY=$(python3 -c 'import json,os;print(json.load(open(os.path.expanduser(\"~\u002F.webobsidian\u002Fcredentials.json\")))[\"apiKey\"])')\n```\n\nIf `~\u002F.webobsidian\u002Fcredentials.json` does **not** exist or a call returns **401**:\n\n1. Ask the user for their **WebObsidian base URL** (e.g. `https:\u002F\u002Fnotes.example.com` or\n   `http:\u002F\u002Fhost:8787`) and their **API key**. They create the key in the app at\n   **Settings → API Keys** (choose scopes `read` \u002F `write` \u002F `search`). Keys look like `wok_…`.\n2. Save it (never echo the key back):\n   ```bash\n   mkdir -p ~\u002F.webobsidian && chmod 700 ~\u002F.webobsidian\n   cat > ~\u002F.webobsidian\u002Fcredentials.json \u003C\u003CJSON\n   { \"baseUrl\": \"\u003CBASE_URL>\", \"apiKey\": \"\u003CAPI_KEY>\" }\n   JSON\n   chmod 600 ~\u002F.webobsidian\u002Fcredentials.json\n   ```\n3. Verify with the health + an authenticated call, then proceed.\n\n**Security rules:** never print, log, or commit the API key. Never write it into vault\nnotes. If a command would expose it, redact it.\n\n## Sanity check\n\n```bash\ncurl -s \"$BASE\u002Fapi\u002Fv1\u002Fhealth\"                          # liveness, no auth\ncurl -s -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Ftags\" | head # confirms the key works\n```\n\n## Authentication\n\nSend the key as a header on every `\u002Fapi\u002Fv1` request (either form works):\n\n```\nX-API-Key: wok_xxx\nAuthorization: Bearer wok_xxx\n```\n\nScopes per key: `read`, `write`, `search`. A call outside the key's scope returns `403`.\nRate-limited (default 120 req\u002Fmin\u002Fkey) → `429` when exceeded; back off and retry.\n\n## Endpoint reference\n\nAll `{path}` values are **vault-relative** and must be **URL-encoded** (`curl -G --data-urlencode`\nfor queries; encode `\u002F`-containing paths in the URL path, e.g. `Notes\u002FIdeas.md` →\n`Notes%2FIdeas.md` is accepted, plain `Notes\u002FIdeas.md` also works).\n\n| Method | Path | Scope | Description |\n|--------|------|-------|-------------|\n| GET | `\u002Fapi\u002Fv1\u002Fhealth` | – | Liveness check |\n| GET | `\u002Fapi\u002Fv1\u002Fnotes?offset=&limit=` | read | List markdown notes (paginated) |\n| GET | `\u002Fapi\u002Fv1\u002Fnotes\u002F{path}` | read | Read a note + parsed metadata |\n| PUT | `\u002Fapi\u002Fv1\u002Fnotes\u002F{path}` | write | Create \u002F overwrite a note — body `{\"content\":\"...\"}` |\n| PATCH | `\u002Fapi\u002Fv1\u002Fnotes\u002F{path}` | write | Append — body `{\"append\":\"...\"}` |\n| DELETE | `\u002Fapi\u002Fv1\u002Fnotes\u002F{path}` | write | Move note to trash |\n| GET | `\u002Fapi\u002Fv1\u002Fsearch?q=&limit=` | search | QMD search (fielded: `tag:`, `path:`, `title:`) |\n| GET | `\u002Fapi\u002Fv1\u002Fbacklinks?path=` | read | Notes linking to a path |\n| GET | `\u002Fapi\u002Fv1\u002Ftags` | read | All tags with counts |\n\n## Recipes\n\n```bash\n# List 10 notes\ncurl -s -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fnotes?limit=10\"\n\n# Read a note (URL-encode the path's query value if it has spaces\u002Fslashes)\ncurl -s -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fnotes\u002FWelcome.md\"\n\n# Create or overwrite a note\ncurl -s -X PUT -H \"X-API-Key: $KEY\" -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"content\":\"# Title\\n\\nBody written by the agent.\"}' \\\n  \"$BASE\u002Fapi\u002Fv1\u002Fnotes\u002FAgent\u002FGenerated.md\"\n\n# Append to a note (creates it if missing)\ncurl -s -X PATCH -H \"X-API-Key: $KEY\" -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"append\":\"\\n- another bullet\"}' \\\n  \"$BASE\u002Fapi\u002Fv1\u002Fnotes\u002FAgent\u002FGenerated.md\"\n\n# Delete a note (→ trash)\ncurl -s -X DELETE -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fnotes\u002FAgent\u002FGenerated.md\"\n\n# Full-text search (fielded queries supported)\ncurl -s -G -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fsearch\" \\\n  --data-urlencode \"q=tag:idea graph\" --data-urlencode \"limit=5\"\n\n# Backlinks for a note\ncurl -s -G -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Fbacklinks\" --data-urlencode \"path=Welcome.md\"\n\n# All tags with counts\ncurl -s -H \"X-API-Key: $KEY\" \"$BASE\u002Fapi\u002Fv1\u002Ftags\"\n```\n\n## Response shapes\n\n```jsonc\n\u002F\u002F GET \u002Fapi\u002Fv1\u002Fnotes\u002F{path}\n{ \"path\": \"Welcome.md\", \"content\": \"...\", \"title\": \"Welcome\",\n  \"frontmatter\": { \"tags\": [\"welcome\"] }, \"tags\": [\"welcome\"], \"links\": [\"Notes\u002FIdeas\"] }\n\n\u002F\u002F GET \u002Fapi\u002Fv1\u002Fsearch\n{ \"query\": \"graph\", \"hits\": [\n  { \"path\": \"Notes\u002FIdeas.md\", \"title\": \"Ideas\", \"score\": 4.2, \"tags\": [\"idea\"], \"snippet\": \"…\" } ] }\n```\n\n## Obsidian Flavored Markdown (write notes in this dialect)\n\nThe vault is a real Obsidian vault — the user also opens these files in the Obsidian app,\nso write **Obsidian Flavored Markdown**, not plain Markdown. Use `[[wikilinks]]` for links\nbetween vault notes (Obsidian tracks renames); use `[text](url)` **only** for external URLs.\n\n### Properties (YAML frontmatter)\nAt the very top of the note, between `---` fences. Default keys: `tags`, `aliases`,\n`cssclasses`. Preserve existing frontmatter on overwrite.\n\n```markdown\n---\ntitle: My Note\ndate: 2024-01-15\ntags:\n  - project\n  - active\naliases:\n  - Alternative Name\n---\n```\n\n### Wikilinks (internal links)\n```markdown\n[[Note Name]]                 Link to a note\n[[Note Name|Display Text]]    Custom display text\n[[Note Name#Heading]]         Link to a heading\n[[Note Name#^block-id]]       Link to a block\n[[#Heading in same note]]     Same-note link\n```\n\n### Block references\nAppend `^block-id` to a paragraph; for lists\u002Fquotes put the id on its own line after the block.\n```markdown\nThis paragraph can be linked to. ^my-block-id\n```\n\n### Embeds \u002F transclusion (prefix a wikilink with `!`)\n```markdown\n![[Note Name]]                Embed a whole note\n![[Note Name#Heading]]        Embed one section\n![[image.png]]                Embed an image\n![[image.png|300]]            Embed with width\n![[document.pdf#page=3]]      Embed a PDF page\n```\n\n### Callouts\n```markdown\n> [!note]\n> Basic callout.\n\n> [!warning] Custom Title\n> Callout with a custom title.\n\n> [!faq]- Collapsed by default\n> Foldable callout (`-` starts collapsed, `+` starts expanded).\n```\nCommon types: `note`, `tip`, `info`, `warning`, `danger`, `success`, `failure`, `question`,\n`example`, `quote`, `bug`, `abstract`, `todo`.\n\n### Tags\n```markdown\n#tag            inline tag\n#nested\u002Ftag     hierarchical tag\n```\nLetters, digits (not first char), `_`, `-`, `\u002F`. Tags also go in frontmatter `tags:`.\n\n### Tasks\n```markdown\n- [ ] Pending task\n- [x] Completed task\n```\n\n### Other syntax\n```markdown\n==highlight==   **bold**   *italic*\nFootnote[^1].          [^1]: Footnote text.       Inline footnote.^[Inline text.]\nVisible %%hidden inline comment%% text.            $e^{i\\pi}+1=0$  (inline math)\n```\n````markdown\n$$\\frac{a}{b} = c$$         (block math, KaTeX)\n\n```mermaid\ngraph TD\n  A --> B\n```\n````\n\n## Editing rules\n\n- **Prefer `PATCH` append** over `PUT` when only adding content, so you don't clobber a note.\n- **Read before you overwrite** an existing note unless the user explicitly wants a fresh\n  replace; preserve its frontmatter and formatting.\n- Paths are **case-sensitive** and notes must include the `.md` extension.\n- When you reference another note, link it (`[[Other Note]]`) instead of writing a bare name —\n  it keeps the graph and backlinks intact.\n\n## Troubleshooting\n\n- `401` → key missing\u002Finvalid → re-run the credentials flow above.\n- `403` → the key lacks the required scope → ask the user to create a key with the needed\n  scope (`read`\u002F`write`\u002F`search`).\n- `404` on a note → wrong path\u002Fcasing, or it's in `.trash`.\n- `429` → rate limited → wait and retry.\n- Connection refused \u002F TLS error → confirm the base URL and that the server is reachable.\n",{"name":5,"description":7},"main","7db7c6f88fb96b6792195dacabdb088419b7a9fa","services\u002Fvault-viewer\u002Fdocs\u002Fagent-skill\u002Fwebobsidian",0,"https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform","https:\u002F\u002Fgithub.com\u002FAllternit","https:\u002F\u002Fallternit.com","Allternit builds AI agents that work on your computer, in the cloud, and from your phone. Home of Allternit Desktop and Gizzi Code.","2026-11-15 02:40:14",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add Allternit\u002Fallternit-platform --skill webobsidian",{"tool":67,"command":68},"bunx","bunx skills add Allternit\u002Fallternit-platform --skill webobsidian",{"tool":70,"command":71},"pnpm","pnpm dlx skills add Allternit\u002Fallternit-platform --skill webobsidian","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Fservices\u002Fvault-viewer\u002Fdocs\u002Fagent-skill\u002Fwebobsidian\u002FSKILL.md",true,[],[76,100,119,142,164,192],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":47},"01M6C6GBWRCJNWQP5S16PKXB77","jev","Ask typed System One judgments (noul \u002F choice \u002F score) against Allternit's LOCAL System One server instead of prompting a chat model to \"return JSON\". Use when classifying, routing, scoring, or screening something and code needs a probability it can branch on, or when the user runs \u002Fjev. Official TypeSafe Jev is an optional, explicit remote lane.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev\u002FSKILL.md",[],[78,83,84,85,86,87,88,34,89,90,91,32,92,27,93,94,95,96,97,98,99],"official","routing","code","server","lane","system","model","choice","branch","user","scoring","chat","local","probability","remote","can","when",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":47},"01M6C6G9CGB9MX47NSQ31QNNB7","jev-route","Route with local System One answers — map Choice + confidence to act \u002F confirm \u002F human lanes, or pick a model tier by Choice label. Also documents the separate `route-model` helper for OpenRouter's typesafe\u002Fjev-router (a chat-model router, NOT System One). Use for confidence routing, model-tier routing, or when the user runs \u002Fjev-route.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-route\u002FSKILL.md",[],[78,107,108,109,84,88,89,110,90,111,92,27,112,113,94,114,95,115,116,117,118,99],"jev route","route","documents","pick","openrouter","router","model router","map","helper","with","for","model-tier",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":47},"01M6C6G6JZE0RC50QWWE6HG320","jev-guardrail","Screen text or agent tool calls with a battery of local System One Noul hazards plus a Score, with policy in code — and the Claude Code PreToolUse guard (hooks\u002Fpretooluse-guard) that puts deterministic hard rules first and lets Jev only raise friction. Use for injection\u002Fsecret\u002Fdestructive-action screening or when the user runs \u002Fjev-guardrail.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-guardrail\u002FSKILL.md",[],[78,126,127,128,85,129,130,131,88,132,133,134,92,27,135,136,137,138,95,139,140,117,141,99],"jev guardrail","guardrail","policy","injection","first","guard","tool","text","Rules","friction","only","hooks","deterministic","battery","calls","agent tool",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":151,"publishedAt":47},"01M6C6G426P7Q5J3F98HVYDCB2","jev-fanout","Ask every independent System One question over the same state in ONE POST \u002Fv1\u002Fsystemone to the local server (speculative fan-out). Use for parallel judgments, compound commands, one-call turn assessment, or when the user runs \u002Fjev-fanout. Do not fire one HTTP call per question.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-fanout\u002FSKILL.md",[148],{"categoryNo":149,"categoryName":150,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",[78,152,153,154,155,156,86,88,157,32,158,92,27,159,160,95,161,162,117,163,99],"fanout","jev fanout","http","assessment","state","parallel","question","do","call","post","v1","local server",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":47},"01M6C6G13D7JK869Q3DHMQ9542","memory-drive","Read and write the user's Allternit Memory Drive, a git repo of markdown memories in the open Agent Memory Repo format. Use at the start of a session to load what the user's agents remember (MEMORY.md), when the user says \"remember this\", when you learn a durable fact about the user or their work, and before answering questions that depend on past sessions.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fmemory-drive-plugin\u002Fskills\u002Fmemory-drive\u002FSKILL.md",[],[171,172,173,174,175,176,177,178,179,180,181,182,183,184,31,30,92,185,27,186,187,188,189,190,191,99],"memory","drive","memory drive","sessions","remember","learn","git","agent memory","start","open","markdown","format","work","repo","session","what the","memories","about","questions","you","load",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":199,"publishedAt":47},"01M6C6FX778N1047QAJ39Y582H","agent-orchestrator","Orchestrate external CLI agents (kimi, codex, agy, claude, grok, gizzi) through the Allternit Factory (gizzi agents \u002F orchestration \u002F workspace \u002F workflows). Use when the user asks to delegate, offload, or farm out implementation work to another CLI agent \u002F terminal session, or to run work outside this session to save tokens. Part of Allternit Agents \u002F Bot Agents — not a separate product.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fagent-orchestrator\u002FSKILL.md",[198],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[200,201,202,203,204,205,206,207,43,208,209,36,210,183,211,212,185,27,213,214,215,216,217,218,219,220,99],"orchestrator","agent orchestrator","bot","cli","terminal","codex","orchestration","workflows","product","orchestrate","workspace","delegate","factory","grok","kimi","implementation","offload","tokens","cli agents","farm","terminal session"]