[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DWSQB7NSW53Z86XM81R1W1":3,"skill-same:01M6DWSQB7NSW53Z86XM81R1W1":83},{"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":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":64,"ownerHtmlUrl":65,"ownerBlogUrl":66,"ownerDescription":67,"updatedAt":68,"install":69,"resources":82},"01M6DWSQB7NSW53Z86XM81R1W1","tap-deps-authoring",null,"Write dep scripts for the octomind-tap registry: header comments, platform.sh, mcp vs dep types, npx\u002Fuvx pattern. Use when editing deps\u002F\u003Corg>\u002F\u003Ctool>.sh.","Muvon\u002Foctomind-tap","Muvon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25336907?v=4","01M6DWA4KTRX4J73CW5CECKAD0","01M6DWA4QSWFGYE6WDMAMFF1WE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-deps-authoring\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"tap","tap deps authoring","authoring","deps","for","org","write","when","types","tool","editing","repo","platform","registry","install","pattern","scripts","run","MCP","DEP","2026-11-10 10:12:30",false,"---\nname: tap-deps-authoring\ntitle: \"Tap Dep Script Authoring\"\ndescription: \"Write dep scripts for the octomind-tap registry: header comments, platform.sh, mcp vs dep types, npx\u002Fuvx pattern. Use when editing deps\u002F\u003Corg>\u002F\u003Ctool>.sh.\"\nlicense: Apache-2.0\ncompatibility: \"Requires: octomind-tap repo. Run scripts\u002Flint-deps.sh for validation.\"\ndomains: octomind\nrules:\n  - file(deps\u002F)\n  - match(\\bdep\\s+script\\b)\n  - match(\\bdeps\u002F[\\w.\u002F-]+)\n  - match(\\bplatform\\.sh\\b)\n  - match(\\binstall\\s+script\\b)\n  - match(\\bpkg_check\\b|\\bpkg_install\\b|\\binstall_dep\\b)\n  - match(\\b(mcp|dep)\\s+manifest\\b)\n---\n\n## Overview\n\nA dep script is a `deps\u002F\u003Corg>\u002F\u003Ctool>.sh` bash script that installs a tool or MCP server runtime. Octomind runs every `[deps] require` entry of a manifest's capabilities before MCP initialisation, and a capability's deps again when it is activated at runtime. Every script must be idempotent and handle macOS and the major Linux package managers.\n\nRuntime contract: Octomind invokes `bash \u003Cscript>` (Git Bash on Windows), so the executable bit is not required. stdin is closed, stdout is discarded, stderr is captured and shown only when the script fails; exit 0 means ready, non-zero aborts the session start or the activation with that stderr.\n\nEach dep script must have a matching `deps\u002F\u003Corg>\u002F\u003Ctool>.md` companion doc.\n\n## Rules\n\n### Required Header Comments\n\nEvery dep script starts with these header comments, exactly on lines 1–6 in this order (`lint-deps.sh` checks them by line number):\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: \u003Corg>\u002F\u003Ctool>\n# type: mcp|dep\n# description: \u003CName> - \u003Cwhat it does and what it needs>\n# check: \u003Ccommand-to-verify-installation>\n# https:\u002F\u002Fhomepage-url\n```\n\n- `# dep:` — must equal the file path (`deps\u002F\u003Corg>\u002F\u003Ctool>.sh` → `\u003Corg>\u002F\u003Ctool>`) and the `require` entry in the capability file\n- `# type: mcp` — script ensures an MCP server runtime is runnable (e.g. `npx`, `uvx`, `docker`)\n- `# type: dep` — script installs a standalone CLI tool used directly (e.g. `cargo`, `kubectl`, `octofs`)\n- `# description:` — `\u003CName> - \u003Cwhat it does>; \u003Cdetails>`, 120–155 chars. octomind.run uses the whole line as its search snippet, so name the concrete actions and data, the runtime, and any required API key env var in the details\n- `# check:` — the command that proves the tool is installed\n- line 6 — homepage URL starting with `# https:\u002F\u002F`\n\n### Type Classification\n\n`type: mcp` — the dep exists to make an MCP server launchable. Most MCP servers run via `npx -y \u003Cpackage>` or `uvx \u003Cpackage>`. The dep script just ensures the runtime is present:\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: tavily-ai\u002Ftavily\n# type: mcp\n# description: Tavily MCP Server - web search, page extraction, crawling and site maps through the Tavily API; runs with npx and needs TAVILY_API_KEY\n# check: npx\n# https:\u002F\u002Fgithub.com\u002Ftavily-ai\u002Ftavily-mcp\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check npx; then exit 0; fi\ninstall_dep nodejs\u002Fnode\n```\n\n`type: dep` — the dep installs a real CLI tool that agents use directly (not via MCP):\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: hashicorp\u002Fterraform\n# type: dep\n# description: Terraform infrastructure-as-code CLI\n# check: terraform\n# https:\u002F\u002Fdeveloper.hashicorp.com\u002Fterraform\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check terraform; then exit 0; fi\n\ninfo \"terraform not found — installing...\"\n\ncase \"$OS\" in\n  macos)\n    brew_install terraform\n    ;;\n  linux)\n    case \"$PKG_MANAGER\" in\n      apt)    apt_install terraform ;;\n      dnf)    dnf_install terraform ;;\n      pacman) pkg_install terraform ;;\n      zypper) pkg_install terraform ;;\n      apk)    pkg_install terraform ;;\n      *)\n        curl -fsSL https:\u002F\u002Freleases.hashicorp.com\u002Fterraform\u002Finstall.sh | sh\n        ;;\n    esac\n    ;;\nesac\n\npkg_check terraform || die \"terraform not found after install\"\ninfo \"terraform installed successfully.\"\n```\n\n### Full Script Structure\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: \u003Corg>\u002F\u003Ctool>\n# type: mcp|dep\n# description: Brief description\n# check: \u003Ccommand>\n# https:\u002F\u002Fhomepage\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\n# Fast path — already installed\nif pkg_check \"\u003Ccommand>\"; then exit 0; fi\n\ninfo \"\u003Ctool> not found — installing...\"\n\ncase \"$OS\" in\n  macos)\n    brew_install \u003Cformula>\n    ;;\n  linux)\n    case \"$PKG_MANAGER\" in\n      apt)    apt_install \u003Cpkg> ;;\n      dnf)    dnf_install \u003Cpkg> ;;\n      pacman) pkg_install \u003Cpkg> ;;\n      zypper) pkg_install \u003Cpkg> ;;\n      apk)    pkg_install \u003Cpkg> ;;\n      *)\n        # Universal fallback\n        curl -fsSL https:\u002F\u002Fexample.com\u002Finstall.sh | sh\n        ;;\n    esac\n    ;;\nesac\n\npkg_check \"\u003Ccommand>\" || die \"\u003Ctool> not found after install\"\ninfo \"\u003Ctool> installed successfully.\"\n```\n\n### Platform Variables (from `deps\u002Flib\u002Fplatform.sh`)\n\n| Variable | Values |\n|----------|--------|\n| `$OS` | `macos`, `linux`, or `windows` (Git Bash\u002FMSYS) |\n| `$ARCH` | `x86_64` or `arm64` |\n| `$PKG_MANAGER` | `brew`, `apt`, `dnf`, `pacman`, `zypper`, `apk`, `unknown` |\n| `$IS_MACOS` | `1` or `0` |\n| `$IS_LINUX` \u002F `$IS_WINDOWS` | `1` or `0` |\n| `$IS_ARM64` | `1` or `0` |\n| `$IS_X86_64` | `1` or `0` |\n\n### Platform Functions (from `deps\u002Flib\u002Fplatform.sh`)\n\n| Function | Purpose |\n|----------|---------|\n| `pkg_check \u003Ccmd>` | Returns 0 if command exists — use for fast-path and post-install verify |\n| `pkg_install \u003Cpkg>` | Install via the detected package manager (same name everywhere); dies when none is found |\n| `brew_install \u003Cformula>` | macOS only, no-op elsewhere |\n| `apt_install \u003Cpkg>` | Debian\u002FUbuntu only, no-op elsewhere |\n| `dnf_install \u003Cpkg>` | Fedora\u002FRHEL only, no-op elsewhere |\n| `as_root \u003Ccmd...>` | Run as root directly or via `sudo`; dies when neither is available |\n| `install_dep \u003Corg\u002Ftool>` | Run another dep script as a prerequisite; sources PATH after |\n| `info \u003Cmsg>` | Print informational message to stderr |\n| `warn \u003Cmsg>` | Print warning to stderr |\n| `die \u003Cmsg>` | Print error to stderr and exit 1 |\n\nNever re-implement platform detection — always source `deps\u002Flib\u002Fplatform.sh` (it also sets `set -euo pipefail`).\n\n### Companion Documentation\n\nEvery `.sh` must have a matching `.md` at the same path (`deps\u002F\u003Corg>\u002F\u003Ctool>.md`).\n\nFor MCP servers (`type: mcp`) — copy `templates\u002Fdep-mcp.md`, must include:\n- `## MCP Server` — package name, transport, launch command\n- `## Authentication` — required env vars and how to obtain them\n- `## Available Tools` — list of tools the MCP server exposes\n- `## Configuration Example` — example `[[mcp.servers]]` TOML block\n\nFor plain deps (`type: dep`) — copy `templates\u002Fdep-tool.md`, must include:\n- `## Key Commands` — most important CLI commands\n- `## Common Usage` — typical usage patterns with examples\n\n### Validation\n\n```bash\nbash scripts\u002Flint-deps.sh deps\u002F\u003Corg>\u002F\u003Ctool>.sh\n```\n\nChecks: header lines 2–6 present in order, `# dep:` matches the file path, description length, `# type:` set, companion `.md` exists with an H1 equal to `\u003Corg>\u002F\u003Ctool>` and the required `##` sections for its type. It does not check platform coverage or the executable bit — test the script yourself on an installed and a clean machine.\n\n## Examples\n\n### Example 1: MCP server via npx (minimal)\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: modelcontextprotocol\u002Ffilesystem\n# type: mcp\n# description: MCP filesystem server — requires Node.js\u002Fnpx\n# check: npx\n# https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check npx; then exit 0; fi\ninstall_dep nodejs\u002Fnode\n```\n\n### Example 2: MCP server via uvx (Python)\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: myorg\u002Fmcp-server\n# type: mcp\n# description: My Python MCP server — requires uvx\n# check: uvx\n# https:\u002F\u002Fgithub.com\u002Fmyorg\u002Fmcp-server\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check uvx; then exit 0; fi\ninstall_dep astral-sh\u002Fuv\n```\n\n### Example 3: GitHub release binary install\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: muvon\u002Foctofs\n# type: dep\n# description: Installs the octofs CLI from GitHub releases\n# check: octofs\n# https:\u002F\u002Fgithub.com\u002Fmuvon\u002Foctofs\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check octofs; then exit 0; fi\n\ncase \"$OS\" in\n  macos)\n    brew_install muvon\u002Ftap\u002Foctofs\n    ;;\n  linux)\n    INSTALL_DIR=\"$HOME\u002F.local\u002Fbin\"\n    mkdir -p \"$INSTALL_DIR\"\n    VERSION=$(curl -fsSL \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fmuvon\u002Foctofs\u002Freleases\" \\\n      | grep '\"tag_name\":' | head -1 | sed -E 's\u002F.*\"([^\"]+)\".*\u002F\\1\u002F')\n    case \"$ARCH\" in\n      x86_64) TARGET=\"x86_64-unknown-linux-musl\" ;;\n      arm64)  TARGET=\"aarch64-unknown-linux-musl\" ;;\n    esac\n    curl -fsSL \"https:\u002F\u002Fgithub.com\u002Fmuvon\u002Foctofs\u002Freleases\u002Fdownload\u002F$VERSION\u002Foctofs-$VERSION-$TARGET.tar.gz\" \\\n      | tar xz -C \"$INSTALL_DIR\"\n    chmod +x \"$INSTALL_DIR\u002Foctofs\"\n    export PATH=\"$INSTALL_DIR:$PATH\"\n    ;;\nesac\n\npkg_check octofs || die \"octofs not found after install\"\n```\n\n### Example 4: Common mistake — re-implementing platform detection\n\n```bash\n# WRONG — never do this\nif [[ \"$(uname)\" == \"Darwin\" ]]; then\n  brew install something\nfi\n\n# RIGHT — source platform.sh and use its functions\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\nbrew_install something\n```\n\n## Checklist\n\n- [ ] File at `deps\u002F\u003Corg>\u002F\u003Ctool>.sh` (org matches GitHub org or tool namespace)\n- [ ] Header comments on lines 2–6 in order: `# dep:`, `# type:`, `# description:`, `# check:`, URL\n- [ ] Sources `deps\u002Flib\u002Fplatform.sh` — never re-implements platform detection\n- [ ] Fast-path `pkg_check` exit at top; idempotent on an installed machine\n- [ ] Handles `macos` + all Linux package managers + universal fallback; nothing written to stdout that matters\n- [ ] Post-install `pkg_check` verify with `die` on failure\n- [ ] Companion `deps\u002F\u003Corg>\u002F\u003Ctool>.md` exists, its H1 is `\u003Corg>\u002F\u003Ctool>`, and it has the sections for its type\n- [ ] `bash scripts\u002Flint-deps.sh deps\u002F\u003Corg>\u002F\u003Ctool>.sh` passes clean\n\n## References\n\n- `templates\u002Fdep.sh` — canonical dep script template (copy to start)\n- `templates\u002Fdep-mcp.md` — companion doc template for MCP servers\n- `templates\u002Fdep-tool.md` — companion doc template for plain deps\n- `deps\u002Flib\u002Fplatform.sh` — platform detection library (source in all dep scripts)\n- `bash scripts\u002Flint-deps.sh` — validates dep scripts\n","## Overview\n\nA dep script is a `deps\u002F\u003Corg>\u002F\u003Ctool>.sh` bash script that installs a tool or MCP server runtime. Octomind runs every `[deps] require` entry of a manifest's capabilities before MCP initialisation, and a capability's deps again when it is activated at runtime. Every script must be idempotent and handle macOS and the major Linux package managers.\n\nRuntime contract: Octomind invokes `bash \u003Cscript>` (Git Bash on Windows), so the executable bit is not required. stdin is closed, stdout is discarded, stderr is captured and shown only when the script fails; exit 0 means ready, non-zero aborts the session start or the activation with that stderr.\n\nEach dep script must have a matching `deps\u002F\u003Corg>\u002F\u003Ctool>.md` companion doc.\n\n## Rules\n\n### Required Header Comments\n\nEvery dep script starts with these header comments, exactly on lines 1–6 in this order (`lint-deps.sh` checks them by line number):\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: \u003Corg>\u002F\u003Ctool>\n# type: mcp|dep\n# description: \u003CName> - \u003Cwhat it does and what it needs>\n# check: \u003Ccommand-to-verify-installation>\n# https:\u002F\u002Fhomepage-url\n```\n\n- `# dep:` — must equal the file path (`deps\u002F\u003Corg>\u002F\u003Ctool>.sh` → `\u003Corg>\u002F\u003Ctool>`) and the `require` entry in the capability file\n- `# type: mcp` — script ensures an MCP server runtime is runnable (e.g. `npx`, `uvx`, `docker`)\n- `# type: dep` — script installs a standalone CLI tool used directly (e.g. `cargo`, `kubectl`, `octofs`)\n- `# description:` — `\u003CName> - \u003Cwhat it does>; \u003Cdetails>`, 120–155 chars. octomind.run uses the whole line as its search snippet, so name the concrete actions and data, the runtime, and any required API key env var in the details\n- `# check:` — the command that proves the tool is installed\n- line 6 — homepage URL starting with `# https:\u002F\u002F`\n\n### Type Classification\n\n`type: mcp` — the dep exists to make an MCP server launchable. Most MCP servers run via `npx -y \u003Cpackage>` or `uvx \u003Cpackage>`. The dep script just ensures the runtime is present:\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: tavily-ai\u002Ftavily\n# type: mcp\n# description: Tavily MCP Server - web search, page extraction, crawling and site maps through the Tavily API; runs with npx and needs TAVILY_API_KEY\n# check: npx\n# https:\u002F\u002Fgithub.com\u002Ftavily-ai\u002Ftavily-mcp\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check npx; then exit 0; fi\ninstall_dep nodejs\u002Fnode\n```\n\n`type: dep` — the dep installs a real CLI tool that agents use directly (not via MCP):\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: hashicorp\u002Fterraform\n# type: dep\n# description: Terraform infrastructure-as-code CLI\n# check: terraform\n# https:\u002F\u002Fdeveloper.hashicorp.com\u002Fterraform\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check terraform; then exit 0; fi\n\ninfo \"terraform not found — installing...\"\n\ncase \"$OS\" in\n  macos)\n    brew_install terraform\n    ;;\n  linux)\n    case \"$PKG_MANAGER\" in\n      apt)    apt_install terraform ;;\n      dnf)    dnf_install terraform ;;\n      pacman) pkg_install terraform ;;\n      zypper) pkg_install terraform ;;\n      apk)    pkg_install terraform ;;\n      *)\n        curl -fsSL https:\u002F\u002Freleases.hashicorp.com\u002Fterraform\u002Finstall.sh | sh\n        ;;\n    esac\n    ;;\nesac\n\npkg_check terraform || die \"terraform not found after install\"\ninfo \"terraform installed successfully.\"\n```\n\n### Full Script Structure\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: \u003Corg>\u002F\u003Ctool>\n# type: mcp|dep\n# description: Brief description\n# check: \u003Ccommand>\n# https:\u002F\u002Fhomepage\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\n# Fast path — already installed\nif pkg_check \"\u003Ccommand>\"; then exit 0; fi\n\ninfo \"\u003Ctool> not found — installing...\"\n\ncase \"$OS\" in\n  macos)\n    brew_install \u003Cformula>\n    ;;\n  linux)\n    case \"$PKG_MANAGER\" in\n      apt)    apt_install \u003Cpkg> ;;\n      dnf)    dnf_install \u003Cpkg> ;;\n      pacman) pkg_install \u003Cpkg> ;;\n      zypper) pkg_install \u003Cpkg> ;;\n      apk)    pkg_install \u003Cpkg> ;;\n      *)\n        # Universal fallback\n        curl -fsSL https:\u002F\u002Fexample.com\u002Finstall.sh | sh\n        ;;\n    esac\n    ;;\nesac\n\npkg_check \"\u003Ccommand>\" || die \"\u003Ctool> not found after install\"\ninfo \"\u003Ctool> installed successfully.\"\n```\n\n### Platform Variables (from `deps\u002Flib\u002Fplatform.sh`)\n\n| Variable | Values |\n|----------|--------|\n| `$OS` | `macos`, `linux`, or `windows` (Git Bash\u002FMSYS) |\n| `$ARCH` | `x86_64` or `arm64` |\n| `$PKG_MANAGER` | `brew`, `apt`, `dnf`, `pacman`, `zypper`, `apk`, `unknown` |\n| `$IS_MACOS` | `1` or `0` |\n| `$IS_LINUX` \u002F `$IS_WINDOWS` | `1` or `0` |\n| `$IS_ARM64` | `1` or `0` |\n| `$IS_X86_64` | `1` or `0` |\n\n### Platform Functions (from `deps\u002Flib\u002Fplatform.sh`)\n\n| Function | Purpose |\n|----------|---------|\n| `pkg_check \u003Ccmd>` | Returns 0 if command exists — use for fast-path and post-install verify |\n| `pkg_install \u003Cpkg>` | Install via the detected package manager (same name everywhere); dies when none is found |\n| `brew_install \u003Cformula>` | macOS only, no-op elsewhere |\n| `apt_install \u003Cpkg>` | Debian\u002FUbuntu only, no-op elsewhere |\n| `dnf_install \u003Cpkg>` | Fedora\u002FRHEL only, no-op elsewhere |\n| `as_root \u003Ccmd...>` | Run as root directly or via `sudo`; dies when neither is available |\n| `install_dep \u003Corg\u002Ftool>` | Run another dep script as a prerequisite; sources PATH after |\n| `info \u003Cmsg>` | Print informational message to stderr |\n| `warn \u003Cmsg>` | Print warning to stderr |\n| `die \u003Cmsg>` | Print error to stderr and exit 1 |\n\nNever re-implement platform detection — always source `deps\u002Flib\u002Fplatform.sh` (it also sets `set -euo pipefail`).\n\n### Companion Documentation\n\nEvery `.sh` must have a matching `.md` at the same path (`deps\u002F\u003Corg>\u002F\u003Ctool>.md`).\n\nFor MCP servers (`type: mcp`) — copy `templates\u002Fdep-mcp.md`, must include:\n- `## MCP Server` — package name, transport, launch command\n- `## Authentication` — required env vars and how to obtain them\n- `## Available Tools` — list of tools the MCP server exposes\n- `## Configuration Example` — example `[[mcp.servers]]` TOML block\n\nFor plain deps (`type: dep`) — copy `templates\u002Fdep-tool.md`, must include:\n- `## Key Commands` — most important CLI commands\n- `## Common Usage` — typical usage patterns with examples\n\n### Validation\n\n```bash\nbash scripts\u002Flint-deps.sh deps\u002F\u003Corg>\u002F\u003Ctool>.sh\n```\n\nChecks: header lines 2–6 present in order, `# dep:` matches the file path, description length, `# type:` set, companion `.md` exists with an H1 equal to `\u003Corg>\u002F\u003Ctool>` and the required `##` sections for its type. It does not check platform coverage or the executable bit — test the script yourself on an installed and a clean machine.\n\n## Examples\n\n### Example 1: MCP server via npx (minimal)\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: modelcontextprotocol\u002Ffilesystem\n# type: mcp\n# description: MCP filesystem server — requires Node.js\u002Fnpx\n# check: npx\n# https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check npx; then exit 0; fi\ninstall_dep nodejs\u002Fnode\n```\n\n### Example 2: MCP server via uvx (Python)\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: myorg\u002Fmcp-server\n# type: mcp\n# description: My Python MCP server — requires uvx\n# check: uvx\n# https:\u002F\u002Fgithub.com\u002Fmyorg\u002Fmcp-server\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check uvx; then exit 0; fi\ninstall_dep astral-sh\u002Fuv\n```\n\n### Example 3: GitHub release binary install\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# dep: muvon\u002Foctofs\n# type: dep\n# description: Installs the octofs CLI from GitHub releases\n# check: octofs\n# https:\u002F\u002Fgithub.com\u002Fmuvon\u002Foctofs\n\nset -euo pipefail\n\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\n\nif pkg_check octofs; then exit 0; fi\n\ncase \"$OS\" in\n  macos)\n    brew_install muvon\u002Ftap\u002Foctofs\n    ;;\n  linux)\n    INSTALL_DIR=\"$HOME\u002F.local\u002Fbin\"\n    mkdir -p \"$INSTALL_DIR\"\n    VERSION=$(curl -fsSL \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fmuvon\u002Foctofs\u002Freleases\" \\\n      | grep '\"tag_name\":' | head -1 | sed -E 's\u002F.*\"([^\"]+)\".*\u002F\\1\u002F')\n    case \"$ARCH\" in\n      x86_64) TARGET=\"x86_64-unknown-linux-musl\" ;;\n      arm64)  TARGET=\"aarch64-unknown-linux-musl\" ;;\n    esac\n    curl -fsSL \"https:\u002F\u002Fgithub.com\u002Fmuvon\u002Foctofs\u002Freleases\u002Fdownload\u002F$VERSION\u002Foctofs-$VERSION-$TARGET.tar.gz\" \\\n      | tar xz -C \"$INSTALL_DIR\"\n    chmod +x \"$INSTALL_DIR\u002Foctofs\"\n    export PATH=\"$INSTALL_DIR:$PATH\"\n    ;;\nesac\n\npkg_check octofs || die \"octofs not found after install\"\n```\n\n### Example 4: Common mistake — re-implementing platform detection\n\n```bash\n# WRONG — never do this\nif [[ \"$(uname)\" == \"Darwin\" ]]; then\n  brew install something\nfi\n\n# RIGHT — source platform.sh and use its functions\nDEPS_LIB=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\u002F..\u002Flib\" && pwd)\"\nsource \"$DEPS_LIB\u002Fplatform.sh\"\nbrew_install something\n```\n\n## Checklist\n\n- [ ] File at `deps\u002F\u003Corg>\u002F\u003Ctool>.sh` (org matches GitHub org or tool namespace)\n- [ ] Header comments on lines 2–6 in order: `# dep:`, `# type:`, `# description:`, `# check:`, URL\n- [ ] Sources `deps\u002Flib\u002Fplatform.sh` — never re-implements platform detection\n- [ ] Fast-path `pkg_check` exit at top; idempotent on an installed machine\n- [ ] Handles `macos` + all Linux package managers + universal fallback; nothing written to stdout that matters\n- [ ] Post-install `pkg_check` verify with `die` on failure\n- [ ] Companion `deps\u002F\u003Corg>\u002F\u003Ctool>.md` exists, its H1 is `\u003Corg>\u002F\u003Ctool>`, and it has the sections for its type\n- [ ] `bash scripts\u002Flint-deps.sh deps\u002F\u003Corg>\u002F\u003Ctool>.sh` passes clean\n\n## References\n\n- `templates\u002Fdep.sh` — canonical dep script template (copy to start)\n- `templates\u002Fdep-mcp.md` — companion doc template for MCP servers\n- `templates\u002Fdep-tool.md` — companion doc template for plain deps\n- `deps\u002Flib\u002Fplatform.sh` — platform detection library (source in all dep scripts)\n- `bash scripts\u002Flint-deps.sh` — validates dep scripts\n",{"name":5,"rules":48,"title":56,"domains":57,"license":14,"description":7,"compatibility":58},[49,50,51,52,53,54,55],"file(deps\u002F)","match(\\bdep\\s+script\\b)","match(\\bdeps\u002F[\\w.\u002F-]+)","match(\\bplatform\\.sh\\b)","match(\\binstall\\s+script\\b)","match(\\bpkg_check\\b|\\bpkg_install\\b|\\binstall_dep\\b)","match(\\b(mcp|dep)\\s+manifest\\b)","Tap Dep Script Authoring","octomind","Requires: octomind-tap repo. Run scripts\u002Flint-deps.sh for validation.","master","e9e4a19559669b1627b1ac5ed3f77b8e36cfad95","skills\u002Ftap-deps-authoring",0,"https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap","https:\u002F\u002Foctomind.run\u002Ftap\u002F","https:\u002F\u002Fgithub.com\u002FMuvon","https:\u002F\u002Fmuvon.io","We bring ideas to life","2026-11-13 13:19:02",{"source":8,"skillName":5,"commands":70,"prompt":80,"zipAvailable":81},[71,74,77],{"tool":72,"command":73},"npx","npx skills add Muvon\u002Foctomind-tap --skill tap-deps-authoring",{"tool":75,"command":76},"bunx","bunx skills add Muvon\u002Foctomind-tap --skill tap-deps-authoring",{"tool":78,"command":79},"pnpm","pnpm dlx skills add Muvon\u002Foctomind-tap --skill tap-deps-authoring","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-deps-authoring\u002FSKILL.md",true,[],[84,122,149,169,193,216],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":101,"publishedAt":43},"01M70SFC5CTHRKA9B97N1ARVZ2","seo-content-refresh","Finds decaying pages, picks update, merge, redirect or remove, and briefs each refresh. Use to prioritize existing content and judge whether it helped.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fseo-content-refresh\u002FSKILL.md",[90,93,98],{"categoryNo":91,"categoryName":92,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000019","营销推广",{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000035","市场营销","PROFESSION","适用职业",{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000036","内容创作者",[102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121],"seo content refresh","seo","seo content","content refresh","refresh","content","posts","remove","web search","performance","search","traffic","access","drop","websearch","revamp","merge","diagnosis","update","decay",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":130,"publishedAt":43},"01M70SBWQCHGH7HGS51Y0GTKKW","marketing-review-program","Plans how to ask real customers for honest public reviews: site choice, invitation copy, incentive and disclosure rules. Use to start a review program.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketing-review-program\u002FSKILL.md",[128,129],{"categoryNo":91,"categoryName":92,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},[131,132,133,134,135,136,110,112,137,138,139,140,141,142,143,144,145,146,147,148],"program","review","marketing review program","marketing","reviews","get","campaign","choice","how to","only","generated","ask","plan","product","generate","customer","how","request",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":43},"01M70SBB65Z2FC71Q7DEAXGJBG","geo-source-actions","Turns AI citation findings into ranked per-source actions for Reddit threads, listicles, review sites and videos. Records only. Use after a GEO audit.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fgeo-source-actions\u002FSKILL.md",[],[156,157,158,159,160,136,110,112,161,162,140,116,132,163,164,165,144,166,167,168],"actions","geo source actions","source","geo","sources","copilot","domains","llms","threads","youtube","audit","action","data",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":178,"publishedAt":43},"01M70S99D3Y6GF097GTXWBXHPW","commerce-ai-readiness","Audits product feeds, markup and live pages for AI shopping assistants, then lists exact fixes. Use to make a store catalog readable to AI shoppers.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fcommerce-ai-readiness\u002FSKILL.md",[175],{"categoryNo":176,"categoryName":177,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000031","产品经理",[179,180,181,182,183,184,185,186,187,188,112,189,161,140,114,190,191,144,166,192],"ai readiness","commerce ai readiness","commerce","readiness","feeds","ready","show","shopping","discover","checkout","up","ecommerce","documentation","recommend",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":200,"publishedAt":43},"01M6DWSX45J42KTK6XASKJRGPA","tap-model-training","Train, evaluate and publish the octomind-embed model behind capability auto-activation. Use when capability triggers or skill semantic() phrases change.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-model-training\u002FSKILL.md",[199],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[201,202,23,203,204,189,205,206,207,208,209,210,211,212,213,147,214,215,30,120],"model","training","tap model training","scope","eval","uv","auto","dataset","activate","api","capabilities","publish","change","embedding","re",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":223,"publishedAt":43},"01M6DWSKJ5215FDYSZQK7M3T7S","tap-capability-authoring","Create Octomind capabilities: config.toml triggers, provider files, MCP server wiring, version pins, symlinks. Use when editing capabilities\u002F\u003Cname>\u002F files.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-capability-authoring\u002FSKILL.md",[222],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[23,224,25,225,188,226,41,227,211,228,229,39,230,231,33,232,233,30,234,235],"tap capability authoring","capability","files","mcp server","with scripts","server","config","provider","toml","triggers","wiring","create"]