{"_id":"@cooodersan/invoker","_rev":"2-0ae5c94f93171b249e9ab21e76b5f202","name":"@cooodersan/invoker","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@cooodersan/invoker","version":"0.1.0","license":"MIT","_id":"@cooodersan/invoker@0.1.0","maintainers":[{"name":"cooodersan","email":"546404101@qq.com"}],"homepage":"https://github.com/CoooderSan/invoker#readme","bugs":{"url":"https://github.com/CoooderSan/invoker/issues"},"bin":{"invoker":"dist/bin/invoker.js"},"dist":{"shasum":"2b407f8e3bbc9a83540504a68ecb94c72fea6117","tarball":"https://registry.npmjs.org/@cooodersan/invoker/-/invoker-0.1.0.tgz","fileCount":90,"integrity":"sha512-SelFAoSJcX6euIh8iq8ZWNbSyh1ej0hoQglq82D7mzCQ4jBZaO+3cfl4HWJcw7TyFMZoKZKuniyvJhYq6LThxQ==","signatures":[{"sig":"MEYCIQCpA6dXTAGD8BVlJFJw1fc1Km8UC3suKD+hKbDWN1od+wIhAOi/Uu0ggMuxawU7TdPnmosQKlJDsdtS5B7fXFf3iagK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279585},"type":"module","engines":{"node":">=18"},"gitHead":"c0b455c01ef27d184e11984c6b23839a02eca1c2","scripts":{"dev":"tsc --watch","test":"npm run build && node --test dist/test/*.test.js","build":"tsc","start":"node dist/bin/invoker.js"},"_npmUser":{"name":"cooodersan","email":"546404101@qq.com"},"repository":{"url":"git+https://github.com/CoooderSan/invoker.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Skill Package Manager — manage dependencies, environment, and availability of AI Skills","directories":{},"_nodeVersion":"20.18.3","dependencies":{"ora":"^8.0.1","yaml":"^2.4.5","chalk":"^5.3.0","which":"^4.0.0","semver":"^7.6.2","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0","@types/which":"^3.0.4","@types/semver":"^7.5.8"},"_npmOperationalInternal":{"tmp":"tmp/invoker_0.1.0_1775069661572_0.8146558888384914","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cooodersan/invoker","version":"0.1.1","description":"AI Skill Package Manager — manage dependencies, environment, and availability of AI Skills","type":"module","bin":{"invoker":"dist/bin/invoker.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/bin/invoker.js","test":"npm run build && node --test dist/test/*.test.js"},"repository":{"type":"git","url":"git+https://github.com/CoooderSan/invoker.git"},"homepage":"https://github.com/CoooderSan/invoker#readme","bugs":{"url":"https://github.com/CoooderSan/invoker/issues"},"publishConfig":{"access":"public"},"dependencies":{"commander":"^12.1.0","chalk":"^5.3.0","yaml":"^2.4.5","ora":"^8.0.1","which":"^4.0.0","semver":"^7.6.2"},"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0","@types/which":"^3.0.4","@types/semver":"^7.5.8"},"engines":{"node":">=18"},"license":"MIT","_id":"@cooodersan/invoker@0.1.1","gitHead":"a38ca9a8a9ae8a978af36ad8ecf7e880dfc9ed59","_nodeVersion":"20.18.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-svpfetOpR1rSnOtmJwRv/3td2ZsLj9bhcDCqFQ71e5zKb7tQRNy8JyFALU2B7Azl+GaETHUlbitv+Dk9QdqTyg==","shasum":"cb0ccf47f0a7fea758db5d77bc51930046818a70","tarball":"https://registry.npmjs.org/@cooodersan/invoker/-/invoker-0.1.1.tgz","fileCount":98,"unpackedSize":472038,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICMcJtE5qc/tHzbsZMc6pDgc9BMO+KsD7XIz+Qsg4Fr1AiEAtxgUJLlqMMYlf/t+GLmUaQIvRtOi+eyiqkp3eiWTcj8="}]},"_npmUser":{"name":"cooodersan","email":"546404101@qq.com"},"directories":{},"maintainers":[{"name":"cooodersan","email":"546404101@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/invoker_0.1.1_1775233108688_0.36870131285485375"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-01T18:54:21.505Z","modified":"2026-04-03T16:18:28.979Z","0.1.0":"2026-04-01T18:54:21.719Z","0.1.1":"2026-04-03T16:18:28.855Z"},"bugs":{"url":"https://github.com/CoooderSan/invoker/issues"},"license":"MIT","homepage":"https://github.com/CoooderSan/invoker#readme","repository":{"type":"git","url":"git+https://github.com/CoooderSan/invoker.git"},"description":"AI Skill Package Manager — manage dependencies, environment, and availability of AI Skills","maintainers":[{"name":"cooodersan","email":"546404101@qq.com"}],"readme":"# Invoker — AI Skill Package Manager\n\nInvoker 是一个面向 AI Skills 的 control plane，用来管理 skill 在宿主（host）上的依赖、配置、认证与可运行性。它解决的问题是：**skill 已存在，但因为宿主侧缺依赖、未配置、未认证而不可用**。\n\n## 快速开始\n\n```bash\n# 安装依赖\nnpm install\n\n# 编译\nnpm run build\n\n# 使用\nnode dist/bin/invoker.js scan ./examples/codeup-pr-review\nnode dist/bin/invoker.js doctor ./examples/codeup-pr-review\nnode dist/bin/invoker.js install --dry-run ./examples/codeup-pr-review\nnode dist/bin/invoker.js fix ./examples/codeup-pr-review\nnode dist/bin/invoker.js info ./examples/codeup-pr-review\n```\n\n## 全局安装\n\n```bash\nnpm install -g @cooodersan/invoker\ninvoker scan ./examples/codeup-pr-review\n```\n\n## 临时执行\n\n```bash\nnpx @cooodersan/invoker scan ./examples/codeup-pr-review\n```\n\n## 核心定位\n\n- Invoker 是面向 AI Skills 的 control plane\n- host 是 skill 实际运行与被检查的宿主环境\n- `scan/doctor/install/fix/run` 都围绕宿主侧可用性管理展开\n\n## 核心命令\n\n| 命令 | 说明 |\n|------|------|\n| `invoker scan <skill>` | 扫描 skill 的最终依赖声明（manifest + sidecar） |\n| `invoker doctor <skill>` | 检查当前环境是否满足运行条件 |\n| `invoker install <skill>` | 根据 doctor 结果执行自动化安装步骤 |\n| `invoker install --dry-run <skill>` | 预览自动/手动依赖就绪计划 |\n| `invoker fix <skill>` | 自动修复显式可修复问题 |\n| `invoker list` | 列出当前 host 上已发现的 skills |\n| `invoker info <skill>` | 显示 skill 详情与最近状态 |\n| `invoker run <skill>` | 在 doctor gate 后运行 skill |\n| `invoker register <skill>` | 把宿主上已存在的 skill 注册进 Invoker registry |\n| `invoker unregister <skill>` | 从 Invoker registry 中移除 skill 记录，不删除宿主文件 |\n\n大多数命令都支持：\n\n- `--host <host>`：指定宿主环境，例如 `claude`、`codex`、`invoker`\n- `--host-root <path>`：覆盖该 host 的 skills 根目录\n\n另外也支持持久化 host roots 配置：\n\n- `invoker hosts list`\n- `invoker hosts set <host> <path>`\n- `invoker hosts unset <host>`\n\n## 推荐在 skill.yaml 中声明 requires\n\nInvoker 推荐 skill 作者直接在 `skill.yaml` 中声明 `requires`：\n\n```yaml\nname: my-skill\ndescription: My awesome skill\nversion: 1.0.0\nentrypoint: ./main.js\n\nrequires:\n  cli:\n    - name: git\n      command: git\n      versionCommand: \"git --version\"\n      minVersion: \"2.30.0\"\n      installCommand: \"brew install git\"\n\n  tokens:\n    - name: API Token\n      envVar: MY_API_TOKEN\n      required: true\n\n  env:\n    - name: API URL\n      envVar: MY_API_URL\n      defaultValue: \"https://api.example.com\"\n\n  resources:\n    - name: config\n      path: ./config.json\n      template: '{\"key\": \"value\"}'\n```\n\n## 当上游 schema 暂时不支持时：使用 sidecar\n\nInvoker 支持同目录下的 `invoker.skill.yaml` 作为补充描述文件，用来：\n\n- 补充原始 skill 未声明的依赖\n- 为已声明依赖补充运行细节\n- 让 `scan/doctor/install/fix/run` 继续工作\n\n合并后的依赖会被视为 `effectiveRequires`。\n\n## 设计原则\n\n- `skill.yaml` 是主体声明\n- `invoker.skill.yaml` 是补充运行信息\n- `scan` 输出最终生效的依赖视图\n- `doctor` 把问题分成：缺依赖 / 未配置 / 未认证\n- `registry` 只记录最近状态摘要，不保存完整快照\n- Invoker 作为 control plane 管理 host 侧状态，不把 host 运行细节永久固化成中心化快照\n\n## 文档\n\n更多设计与使用说明见：\n\n- `docs/README.md`\n- `docs/mvp-scope.md`\n- `docs/manifest/skill-manifest.md`\n- `docs/manifest/invoker-sidecar.md`\n- `docs/manifest/merge-strategy.md`\n- `docs/guides/configuring-host-roots.md`\n- `docs/examples/codeup-pr-review.md`\n\n## 项目结构\n\n```text\nsrc/\n  bin/invoker.ts       # CLI 入口\n  core/\n    scanner.ts         # 解析并合并 skill.yaml / invoker.skill.yaml\n    doctor.ts          # 环境检查\n    installer.ts       # 生成/执行依赖就绪计划\n    fixer.ts           # 自动修复\n    registry.ts        # 本地 Skill 注册表与状态摘要\n    runner.ts          # 运行 Skill\n  utils/\n    logger.ts          # 日志输出\n    exec.ts            # 命令执行\n    fs.ts              # 文件操作\n  types.ts             # 类型定义\nexamples/\n  codeup-pr-review/    # manifest + sidecar 示例\n\ndocs/\n  ...                  # 开发与使用文档\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}