@shendu-sdt/sdt-dev-agent 0.1.1 → 0.1.3-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +78 -31
  2. package/dist/catalog.d.ts +16 -0
  3. package/dist/catalog.d.ts.map +1 -0
  4. package/dist/catalog.js +98 -0
  5. package/dist/catalog.js.map +1 -0
  6. package/dist/cli/index.js +72 -3
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/commands/add.d.ts +7 -0
  9. package/dist/commands/add.d.ts.map +1 -0
  10. package/dist/commands/add.js +267 -0
  11. package/dist/commands/add.js.map +1 -0
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +31 -5
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/list.d.ts +4 -0
  16. package/dist/commands/list.d.ts.map +1 -0
  17. package/dist/commands/list.js +20 -0
  18. package/dist/commands/list.js.map +1 -0
  19. package/dist/commands/status.d.ts +2 -0
  20. package/dist/commands/status.d.ts.map +1 -0
  21. package/dist/commands/status.js +66 -0
  22. package/dist/commands/status.js.map +1 -0
  23. package/dist/core/capability-discovery.d.ts +23 -0
  24. package/dist/core/capability-discovery.d.ts.map +1 -0
  25. package/dist/core/capability-discovery.js +49 -0
  26. package/dist/core/capability-discovery.js.map +1 -0
  27. package/dist/core/init-options.d.ts +7 -1
  28. package/dist/core/init-options.d.ts.map +1 -1
  29. package/dist/core/init-options.js +64 -34
  30. package/dist/core/init-options.js.map +1 -1
  31. package/dist/core/init-plan.d.ts +25 -1
  32. package/dist/core/init-plan.d.ts.map +1 -1
  33. package/dist/core/init-plan.js +211 -37
  34. package/dist/core/init-plan.js.map +1 -1
  35. package/dist/core/init-writer.d.ts +17 -1
  36. package/dist/core/init-writer.d.ts.map +1 -1
  37. package/dist/core/init-writer.js +72 -19
  38. package/dist/core/init-writer.js.map +1 -1
  39. package/dist/core/manifest.d.ts +8 -0
  40. package/dist/core/manifest.d.ts.map +1 -0
  41. package/dist/core/manifest.js +16 -0
  42. package/dist/core/manifest.js.map +1 -0
  43. package/dist/core/mcp-config.d.ts +12 -0
  44. package/dist/core/mcp-config.d.ts.map +1 -0
  45. package/dist/core/mcp-config.js +60 -0
  46. package/dist/core/mcp-config.js.map +1 -0
  47. package/dist/core/project-inspector.d.ts +1 -0
  48. package/dist/core/project-inspector.d.ts.map +1 -1
  49. package/dist/core/project-inspector.js +4 -0
  50. package/dist/core/project-inspector.js.map +1 -1
  51. package/dist/core/remote-skill-installer.d.ts +16 -0
  52. package/dist/core/remote-skill-installer.d.ts.map +1 -0
  53. package/dist/core/remote-skill-installer.js +104 -0
  54. package/dist/core/remote-skill-installer.js.map +1 -0
  55. package/dist/core/workflow-installer.d.ts +22 -0
  56. package/dist/core/workflow-installer.d.ts.map +1 -0
  57. package/dist/core/workflow-installer.js +103 -0
  58. package/dist/core/workflow-installer.js.map +1 -0
  59. package/dist/types.d.ts +103 -6
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/types.js +10 -2
  62. package/dist/types.js.map +1 -1
  63. package/dist/utils/follow-up-notice.d.ts +7 -0
  64. package/dist/utils/follow-up-notice.d.ts.map +1 -0
  65. package/dist/utils/follow-up-notice.js +29 -0
  66. package/dist/utils/follow-up-notice.js.map +1 -0
  67. package/dist/utils/init-welcome.d.ts.map +1 -1
  68. package/dist/utils/init-welcome.js +20 -33
  69. package/dist/utils/init-welcome.js.map +1 -1
  70. package/dist/utils/mastergo-notice.d.ts +7 -0
  71. package/dist/utils/mastergo-notice.d.ts.map +1 -0
  72. package/dist/utils/mastergo-notice.js +14 -0
  73. package/dist/utils/mastergo-notice.js.map +1 -0
  74. package/dist/utils/searchable-multi-select.js +5 -6
  75. package/dist/utils/searchable-multi-select.js.map +1 -1
  76. package/dist/utils/styled-select.d.ts.map +1 -1
  77. package/dist/utils/styled-select.js.map +1 -1
  78. package/dist/utils/terminal-theme.d.ts +4 -0
  79. package/dist/utils/terminal-theme.d.ts.map +1 -0
  80. package/dist/utils/terminal-theme.js +25 -0
  81. package/dist/utils/terminal-theme.js.map +1 -0
  82. package/package.json +6 -3
  83. package/templates/bootstrap/project-entry.md +17 -0
  84. package/templates/mcp/context7/claude-code/server.json +6 -0
  85. package/templates/mcp/context7/codex/config.toml +3 -0
  86. package/templates/mcp/mastergo/claude-code/server.json +6 -0
  87. package/templates/mcp/mastergo/codex/config.toml +4 -0
  88. package/templates/skills/builtin/bootstrap-project-docs/SKILL.md +16 -0
  89. package/templates/skills/builtin/bootstrap-project-docs/references/architecture-first.md +7 -0
  90. package/templates/skills/builtin/bootstrap-project-docs/references/tool-rules-follow-up.md +8 -0
  91. package/templates/skills/remote/catalog.json +68 -0
  92. package/templates/workflows/openspec/README.md +7 -0
  93. package/templates/workflows/openspec/claude-code/README.md +7 -0
  94. package/templates/workflows/openspec/codex/README.md +7 -0
  95. package/templates/AGENTS.md +0 -24
  96. package/templates/ARCHITECTURE.md +0 -26
  97. package/templates/capabilities/mcp/README.md +0 -8
  98. package/templates/capabilities/skills/README.md +0 -8
  99. package/templates/docs/ai-collaboration/README.md +0 -16
  100. package/templates/tools/claude-code/README.md +0 -8
  101. package/templates/tools/codex/README.md +0 -8
package/README.md CHANGED
@@ -1,63 +1,76 @@
1
1
  # SDT DevAgent
2
2
 
3
- 面向研发项目落地的 AI 协作底座。
3
+ 面向研发项目的全局 CLI,用于给现有仓库安装项目级 AI 协作接入能力。
4
4
 
5
- 当前版本提供一个初始化命令:
5
+ 当前版本提供以下命令:
6
6
 
7
7
  ```bash
8
8
  sdt-dev-agent init [targetPath]
9
+ sdt-dev-agent status [targetPath]
10
+ sdt-dev-agent list skills
11
+ sdt-dev-agent list mcp
12
+ sdt-dev-agent list workflows
13
+ sdt-dev-agent add skill <name>
14
+ sdt-dev-agent add mcp <name>
15
+ sdt-dev-agent add workflow <name>
9
16
  ```
10
17
 
11
- 它会把项目级 AI 协作文档骨架、工具占位目录、能力包占位目录,以及安装清单 `.sdt-devagent/manifest.json` 安装到现有仓库中。
18
+ 它会围绕 bootstrap skill、项目级 skills、项目级 MCP、workflow 和安装清单来初始化或增量管理目标项目。
19
+
20
+ 当前命令面只处理:
21
+
22
+ - `skills`
23
+ - `mcp`
24
+ - `workflows`
25
+
26
+ 像 `OpenSpec` 这类工作流能力会进入 `list workflows` / `add workflow`,而不会混入普通 `skill`。
12
27
 
13
28
  ## Quick Start
14
29
 
15
30
  **Requires Node.js 20.19.0 or higher.**
16
31
 
17
- 在目标项目中安装:
32
+ 全局安装 CLI:
18
33
 
19
34
  ```bash
20
- pnpm add -D @shendu-sdt/sdt-dev-agent
35
+ pnpm add -g @shendu-sdt/sdt-dev-agent
21
36
  ```
22
37
 
23
- 然后执行初始化:
38
+ 然后在目标项目中执行初始化:
24
39
 
25
40
  ```bash
26
- pnpm exec sdt-dev-agent init .
41
+ cd /path/to/your-project
42
+ sdt-dev-agent init .
27
43
  ```
28
44
 
29
45
  直接使用默认选择:
30
46
 
31
47
  ```bash
32
- pnpm exec sdt-dev-agent init . --yes
33
- ```
34
-
35
- 常见用法:
36
-
37
- ```bash
38
- pnpm exec sdt-dev-agent init . --tools codex --install-mode recommended
39
- pnpm exec sdt-dev-agent init . --tools codex,claude-code --install-mode minimal
40
- pnpm exec sdt-dev-agent init . --tools codex --install-mode custom --capabilities base-assets,skills
48
+ sdt-dev-agent init . --yes
41
49
  ```
42
50
 
43
51
  当前支持:
44
52
 
45
53
  - tools: `codex`, `claude-code`
46
- - install mode: `recommended`, `minimal`, `custom`
47
- - capabilities: `base-assets`, `skills`, `mcp`
54
+ - install mode: `recommended`, `custom`
55
+ - project-level skills path:
56
+ - `codex` -> `.agents/skills/`
57
+ - `claude-code` -> `.claude/skills/`
58
+ - project-level MCP path:
59
+ - `codex` -> `.codex/config.toml`
60
+ - `claude-code` -> `.mcp.json`
48
61
 
49
62
  初始化输出包括:
50
63
 
51
- - `AGENTS.md`
52
- - `ARCHITECTURE.md`
53
- - `docs/ai-collaboration/README.md`
54
- - `.codex/` / `.claude/` 占位文件
64
+ - `.sdt-devagent/bootstrap-project-docs.md`
65
+ - 必装 bootstrap skill:`bootstrap-project-docs`
66
+ - 远端推荐 skills 的项目级安装结果
67
+ - `Context7` / `MasterGo` 的项目级 MCP 配置
55
68
  - `.sdt-devagent/manifest.json`
56
69
 
57
70
  > [!NOTE]
58
- > 当前只支持初始化基座,不包含真实 MCP 接线、真实 Skills 内容或业务闭环。
71
+ > 当前只支持 `Codex` / `Claude Code` 的项目级接入,不包含业务任务编排、PR/发布流或服务端能力。
59
72
  >
60
- > 当前写入策略是严格防覆盖;目标文件已存在时会整体中止,不会自动合并。
73
+ > 重复执行 `init` 时,bootstrap 入口文件和 manifest 会按最新模板直接覆盖;项目级 MCP 会按 server 维度去重合并,远端 skills 只按当前项目去重,项目里没有就安装到项目级。
61
74
 
62
75
  ## Development
63
76
 
@@ -68,14 +81,19 @@ pnpm install
68
81
  pnpm run build
69
82
  ```
70
83
 
71
- 推荐用 `file:` 依赖联调。先在当前仓库执行 `pnpm run build`,再到目标项目中安装:
84
+ 推荐用全局 link 联调。先在当前仓库执行:
85
+
86
+ ```bash
87
+ pnpm link --global
88
+ ```
89
+
90
+ 然后在目标项目中直接执行:
72
91
 
73
92
  ```bash
74
- pnpm add -D file:/Users/your-name/workspace/SDT-DevAgent
75
- pnpm exec sdt-dev-agent init .
93
+ sdt-dev-agent init .
76
94
  ```
77
95
 
78
- 把示例路径替换成你本机 `SDT-DevAgent` 仓库的绝对路径。由于 CLI 入口指向 `dist/cli/index.js`,修改 `src/` 或 `templates/` 后需要重新执行 `pnpm run build`。
96
+ 由于 CLI 入口指向 `dist/cli/index.js`,修改 `src/` 或 `templates/` 后需要重新执行 `pnpm run build`。
79
97
 
80
98
  常用命令:
81
99
 
@@ -96,13 +114,42 @@ pnpm run verify
96
114
  pnpm run verify
97
115
  ```
98
116
 
99
- 然后按版本类型发布:
117
+ 正式版发布:
100
118
 
101
119
  ```bash
102
- pnpm run release
120
+ pnpm run release # 等价于 pnpm run release:patch
103
121
  pnpm run release:patch
104
122
  pnpm run release:minor
105
123
  pnpm run release:major
106
124
  ```
107
125
 
108
- 发布脚本会依次执行 `build`、`npm publish --dry-run --access public`、`version --no-git-tag-version`、`npm publish --access public`,并发布到 npm 官方 registry。
126
+ 说明:
127
+
128
+ - `release` / `release:patch`:发布下一个 patch 版本到 npm `latest`
129
+ - `release:minor`:发布下一个 minor 版本到 npm `latest`
130
+ - `release:major`:发布下一个 major 版本到 npm `latest`
131
+
132
+ 开发主线 beta 发布:
133
+
134
+ ```bash
135
+ BUILD_NUMBER=123 pnpm run release:beta
136
+ # 或
137
+ pnpm run release:beta -- 123
138
+ ```
139
+
140
+ 推荐发布分支约定:
141
+
142
+ - `master`:正式版发布分支,默认手动发布,由发布人显式选择 `patch` / `minor` / `major`
143
+ - `develop`:beta 发布分支,默认由流水线自动执行 `pnpm run release:beta -- ${BUILD_NUMBER}`
144
+
145
+ 版本规则:
146
+
147
+ - 正式版由发布人明确选择 `patch` / `minor` / `major`
148
+ - beta 会基于当前稳定版本生成“下一 patch 版本”的 `-beta.<buildId>` 版本号
149
+ - 例如当前版本是 `0.1.2`,则 beta 会发布为 `0.1.3-beta.123`
150
+
151
+ 发布行为:
152
+
153
+ - 正式版发布到 npm `latest`
154
+ - beta 发布到 npm `beta`
155
+ - 发布脚本会先执行 `build`,再写入目标版本,然后对目标版本执行 `npm publish --dry-run`,最后发布到 npm 官方 registry
@@ -0,0 +1,16 @@
1
+ import type { CatalogMcp, CatalogSkill, CatalogWorkflow, McpId, SkillId, WorkflowId } from './types.js';
2
+ export declare const SKILL_CATALOG: CatalogSkill[];
3
+ export declare const MCP_CATALOG: CatalogMcp[];
4
+ export declare const WORKFLOW_CATALOG: CatalogWorkflow[];
5
+ export declare const REQUIRED_SKILL_ID: SkillId;
6
+ export declare const DEFAULT_SKILL_IDS: SkillId[];
7
+ export declare const OPTIONAL_SKILL_IDS: SkillId[];
8
+ export declare const DEFAULT_MCP_IDS: McpId[];
9
+ export declare const OPTIONAL_MCP_IDS: McpId[];
10
+ export declare const SKILL_IDS: SkillId[];
11
+ export declare const MCP_IDS: McpId[];
12
+ export declare const WORKFLOW_IDS: WorkflowId[];
13
+ export declare function getSkillCatalogEntry(skillId: SkillId): CatalogSkill;
14
+ export declare function getMcpCatalogEntry(mcpId: McpId): CatalogMcp;
15
+ export declare function getWorkflowCatalogEntry(workflowId: WorkflowId): CatalogWorkflow;
16
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EACf,KAAK,EACL,OAAO,EACP,UAAU,EAEX,MAAM,YAAY,CAAA;AA4CnB,eAAO,MAAM,aAAa,EAAE,YAAY,EAYL,CAAA;AAEnC,eAAO,MAAM,WAAW,EAAE,UAAU,EAmBH,CAAA;AAEjC,eAAO,MAAM,gBAAgB,EAAE,eAAe,EAUR,CAAA;AAEtC,eAAO,MAAM,iBAAiB,EAAE,OAAkC,CAAA;AAClE,eAAO,MAAM,iBAAiB,EAAE,OAAO,EAEb,CAAA;AAC1B,eAAO,MAAM,kBAAkB,EAAE,OAAO,EAEd,CAAA;AAC1B,eAAO,MAAM,eAAe,EAAE,KAAK,EAEb,CAAA;AACtB,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAEd,CAAA;AAEtB,eAAO,MAAM,SAAS,EAAE,OAAO,EAEL,CAAA;AAC1B,eAAO,MAAM,OAAO,EAAE,KAAK,EAAqC,CAAA;AAChE,eAAO,MAAM,YAAY,EAAE,UAAU,EAAoD,CAAA;AAEzF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAMnE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAM3D;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAM/E"}
@@ -0,0 +1,98 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ const ALL_TOOLS = ['codex', 'claude-code'];
5
+ const currentDir = path.dirname(fileURLToPath(import.meta.url));
6
+ const projectRoot = path.resolve(currentDir, '..');
7
+ function loadRemoteSkillCatalog() {
8
+ const raw = readFileSync(path.join(projectRoot, 'templates', 'skills', 'remote', 'catalog.json'), 'utf8');
9
+ const entries = JSON.parse(raw);
10
+ return entries.map((entry) => ({
11
+ id: entry.id,
12
+ displayName: entry.displayName,
13
+ description: entry.description,
14
+ sourceType: 'remote-recommended',
15
+ selection: entry.selection,
16
+ detectionMode: entry.detectionMode,
17
+ supportedTools: entry.supportedTools,
18
+ remote: {
19
+ source: entry.source,
20
+ installCommand: entry.installCommand,
21
+ installTargets: entry.installTargets,
22
+ },
23
+ }));
24
+ }
25
+ export const SKILL_CATALOG = [
26
+ {
27
+ id: 'bootstrap-project-docs',
28
+ displayName: 'bootstrap-project-docs',
29
+ description: '初始化项目事实文档与工具规则文档的必装 bootstrap skill。',
30
+ sourceType: 'builtin-local',
31
+ selection: 'required',
32
+ detectionMode: 'single',
33
+ supportedTools: ALL_TOOLS,
34
+ templateDir: 'skills/builtin/bootstrap-project-docs',
35
+ },
36
+ ...loadRemoteSkillCatalog(),
37
+ ];
38
+ export const MCP_CATALOG = [
39
+ {
40
+ id: 'context7',
41
+ displayName: 'Context7',
42
+ description: '默认安装的项目级文档检索 MCP。',
43
+ sourceType: 'project-template',
44
+ selection: 'default',
45
+ supportedTools: ALL_TOOLS,
46
+ templateBaseDir: 'mcp/context7',
47
+ },
48
+ {
49
+ id: 'mastergo',
50
+ displayName: 'MasterGo',
51
+ description: '选装设计稿 MCP。',
52
+ sourceType: 'project-template',
53
+ selection: 'optional',
54
+ supportedTools: ALL_TOOLS,
55
+ templateBaseDir: 'mcp/mastergo',
56
+ },
57
+ ];
58
+ export const WORKFLOW_CATALOG = [
59
+ {
60
+ id: 'openspec',
61
+ displayName: 'OpenSpec',
62
+ description: '独立的 spec-driven workflow 工作流能力,不属于普通 skills 或 MCP。',
63
+ sourceType: 'workflow-integration',
64
+ supportedTools: ALL_TOOLS,
65
+ templateBaseDir: 'workflows/openspec',
66
+ installCommand: 'npx -y @fission-ai/openspec@latest init --tools <tool> --profile core .',
67
+ },
68
+ ];
69
+ export const REQUIRED_SKILL_ID = 'bootstrap-project-docs';
70
+ export const DEFAULT_SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.selection === 'default').map((skill) => skill.id);
71
+ export const OPTIONAL_SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.selection === 'optional').map((skill) => skill.id);
72
+ export const DEFAULT_MCP_IDS = MCP_CATALOG.filter((mcp) => mcp.selection === 'default').map((mcp) => mcp.id);
73
+ export const OPTIONAL_MCP_IDS = MCP_CATALOG.filter((mcp) => mcp.selection === 'optional').map((mcp) => mcp.id);
74
+ export const SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.id !== REQUIRED_SKILL_ID).map((skill) => skill.id);
75
+ export const MCP_IDS = MCP_CATALOG.map((mcp) => mcp.id);
76
+ export const WORKFLOW_IDS = WORKFLOW_CATALOG.map((workflow) => workflow.id);
77
+ export function getSkillCatalogEntry(skillId) {
78
+ const skill = SKILL_CATALOG.find((item) => item.id === skillId);
79
+ if (!skill) {
80
+ throw new Error(`Unknown skill catalog id: ${skillId}`);
81
+ }
82
+ return skill;
83
+ }
84
+ export function getMcpCatalogEntry(mcpId) {
85
+ const mcp = MCP_CATALOG.find((item) => item.id === mcpId);
86
+ if (!mcp) {
87
+ throw new Error(`Unknown MCP catalog id: ${mcpId}`);
88
+ }
89
+ return mcp;
90
+ }
91
+ export function getWorkflowCatalogEntry(workflowId) {
92
+ const workflow = WORKFLOW_CATALOG.find((item) => item.id === workflowId);
93
+ if (!workflow) {
94
+ throw new Error(`Unknown workflow catalog id: ${workflowId}`);
95
+ }
96
+ return workflow;
97
+ }
98
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  import { Command } from 'commander';
2
+ import { runAddMcpCommand, runAddSkillCommand, runAddWorkflowCommand } from '../commands/add.js';
2
3
  import { runInitCommand } from '../commands/init.js';
4
+ import { runListMcpCommand, runListSkillsCommand, runListWorkflowsCommand, } from '../commands/list.js';
5
+ import { runStatusCommand } from '../commands/status.js';
3
6
  const program = new Command();
4
7
  program
5
8
  .name('sdt-dev-agent')
@@ -7,10 +10,11 @@ program
7
10
  .version('0.1.0');
8
11
  program
9
12
  .command('init [targetPath]')
10
- .description('Initialize SDT DevAgent assets in an existing project')
13
+ .description('Initialize bootstrap skills, tool integrations, and MCP config in a project')
11
14
  .option('--tools <tools>', 'Comma-separated tools: codex,claude-code')
12
- .option('--install-mode <mode>', 'Install mode: recommended|minimal|custom')
13
- .option('--capabilities <capabilities>', 'Comma-separated capabilities: base-assets,skills,mcp')
15
+ .option('--install-mode <mode>', 'Install mode: recommended|custom')
16
+ .option('--skills <skills>', 'Comma-separated remote skill ids for custom install')
17
+ .option('--mcp <mcp>', 'Comma-separated MCP ids for custom install')
14
18
  .option('--yes', 'Use default selections without prompting')
15
19
  .action(async (targetPath = '.', options) => {
16
20
  try {
@@ -22,5 +26,70 @@ program
22
26
  process.exitCode = 1;
23
27
  }
24
28
  });
29
+ program
30
+ .command('status [targetPath]')
31
+ .description('Show current project capability status')
32
+ .action(async (targetPath = '.') => {
33
+ try {
34
+ await runStatusCommand(targetPath);
35
+ }
36
+ catch (error) {
37
+ const message = error instanceof Error ? error.message : 'Unknown error';
38
+ console.error(message);
39
+ process.exitCode = 1;
40
+ }
41
+ });
42
+ const listCommand = program.command('list').description('Show installable capability catalogs');
43
+ listCommand.command('skills').description('List installable skills').action(runListSkillsCommand);
44
+ listCommand.command('mcp').description('List installable MCP servers').action(runListMcpCommand);
45
+ listCommand
46
+ .command('workflows')
47
+ .description('List installable workflows')
48
+ .action(runListWorkflowsCommand);
49
+ const addCommand = program
50
+ .command('add')
51
+ .description('Add a skill, MCP, or workflow to an initialized project');
52
+ addCommand
53
+ .command('skill <name>')
54
+ .description('Add a skill to the initialized project')
55
+ .option('--tool <tool>', 'Limit installation to one initialized tool')
56
+ .action(async (name, options) => {
57
+ try {
58
+ await runAddSkillCommand(name, options);
59
+ }
60
+ catch (error) {
61
+ const message = error instanceof Error ? error.message : 'Unknown error';
62
+ console.error(message);
63
+ process.exitCode = 1;
64
+ }
65
+ });
66
+ addCommand
67
+ .command('mcp <name>')
68
+ .description('Add an MCP server to the initialized project')
69
+ .option('--tool <tool>', 'Limit installation to one initialized tool')
70
+ .action(async (name, options) => {
71
+ try {
72
+ await runAddMcpCommand(name, options);
73
+ }
74
+ catch (error) {
75
+ const message = error instanceof Error ? error.message : 'Unknown error';
76
+ console.error(message);
77
+ process.exitCode = 1;
78
+ }
79
+ });
80
+ addCommand
81
+ .command('workflow <name>')
82
+ .description('Add a workflow to the initialized project')
83
+ .option('--tool <tool>', 'Limit installation to one initialized tool')
84
+ .action(async (name, options) => {
85
+ try {
86
+ await runAddWorkflowCommand(name, options);
87
+ }
88
+ catch (error) {
89
+ const message = error instanceof Error ? error.message : 'Unknown error';
90
+ console.error(message);
91
+ process.exitCode = 1;
92
+ }
93
+ });
25
94
  await program.parseAsync(process.argv);
26
95
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;KACrE,MAAM,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;KAC3E,MAAM,CAAC,+BAA+B,EAAE,sDAAsD,CAAC;KAC/F,MAAM,CAAC,OAAO,EAAE,0CAA0C,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QACxE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACtB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface AddCommandOptions {
2
+ tool?: string;
3
+ }
4
+ export declare function runAddSkillCommand(skillId: string, options?: AddCommandOptions): Promise<void>;
5
+ export declare function runAddWorkflowCommand(workflowId: string, options?: AddCommandOptions): Promise<void>;
6
+ export declare function runAddMcpCommand(mcpId: string, options?: AddCommandOptions): Promise<void>;
7
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AA6FD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAsFf;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwEf"}