@gulibs/safe-coder 0.0.27 → 0.0.29

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.
@@ -39,6 +39,8 @@ export interface CrawlParams {
39
39
  rateLimit?: number;
40
40
  includePaths?: string[];
41
41
  excludePaths?: string[];
42
+ outputDir?: string;
43
+ filename?: string;
42
44
  }
43
45
  /**
44
46
  * Crawl result from CLI
@@ -79,6 +81,14 @@ export interface CrawlResult {
79
81
  skillMd: string;
80
82
  quality: number;
81
83
  };
84
+ savedFiles?: {
85
+ skillDir: string;
86
+ skillMdPath: string;
87
+ referenceFiles: Array<{
88
+ name: string;
89
+ path: string;
90
+ }>;
91
+ };
82
92
  }
83
93
  /**
84
94
  * Progress callback function
@@ -1 +1 @@
1
- {"version":3,"file":"cli-executor.d.ts","sourceRoot":"","sources":["../../src/executor/cli-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-executor.d.ts","sourceRoot":"","sources":["../../src/executor/cli-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAGxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;IACH,QAAQ,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE;YACd,eAAe,EAAE,MAAM,CAAC;YACxB,WAAW,EAAE,MAAM,CAAC;YACpB,eAAe,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,UAAU,CAAC,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAElE;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAElC,iBAAiB,CAAC,EAAE,iBAAiB;IAIjD;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,WAAW,EACnB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,WAAW,CAAC;IA2IvB;;OAEG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAK3D;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAIxD"}
@@ -50,6 +50,13 @@ export class CLIExecutor {
50
50
  if (params.excludePaths && params.excludePaths.length > 0) {
51
51
  args.push('--exclude-paths', params.excludePaths.join(','));
52
52
  }
53
+ // ✅ 添加输出参数
54
+ if (params.outputDir) {
55
+ args.push('--output-dir', params.outputDir);
56
+ }
57
+ if (params.filename) {
58
+ args.push('--filename', params.filename);
59
+ }
53
60
  return new Promise((resolve, reject) => {
54
61
  const child = spawn('safe-coder-cli', args, {
55
62
  stdio: ['ignore', 'pipe', 'pipe'],
@@ -1 +1 @@
1
- {"version":3,"file":"cli-executor.js","sourceRoot":"","sources":["../../src/executor/cli-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-executor.js","sourceRoot":"","sources":["../../src/executor/cli-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Auto-install crawl-docs SKILL when MCP server starts
3
+ */
4
+ export declare class AutoSkillInstaller {
5
+ private readonly SKILL_NAME;
6
+ private readonly CLAUDE_SKILLS_DIR;
7
+ /**
8
+ * Install crawl-docs SKILL if it doesn't exist
9
+ */
10
+ installCrawlDocsSkill(): Promise<void>;
11
+ /**
12
+ * Generate SKILL.md content
13
+ */
14
+ private generateSkillContent;
15
+ }
16
+ //# sourceMappingURL=auto-skill-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-skill-installer.d.ts","sourceRoot":"","sources":["../../src/server/auto-skill-installer.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAE1E;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5C;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAyH7B"}
@@ -0,0 +1,164 @@
1
+ import { mkdir, writeFile, access, constants } from 'fs/promises';
2
+ import { join } from 'path';
3
+ import { homedir } from 'os';
4
+ /**
5
+ * Auto-install crawl-docs SKILL when MCP server starts
6
+ */
7
+ export class AutoSkillInstaller {
8
+ SKILL_NAME = 'crawl-docs';
9
+ CLAUDE_SKILLS_DIR = join(homedir(), '.claude', 'skills');
10
+ /**
11
+ * Install crawl-docs SKILL if it doesn't exist
12
+ */
13
+ async installCrawlDocsSkill() {
14
+ try {
15
+ const skillDir = join(this.CLAUDE_SKILLS_DIR, this.SKILL_NAME);
16
+ const skillMdPath = join(skillDir, 'SKILL.md');
17
+ // Check if SKILL already exists
18
+ try {
19
+ await access(skillMdPath, constants.F_OK);
20
+ // SKILL already exists, no need to install
21
+ return;
22
+ }
23
+ catch {
24
+ // SKILL doesn't exist, proceed with installation
25
+ }
26
+ // Create skill directory
27
+ await mkdir(skillDir, { recursive: true });
28
+ // Generate SKILL.md content
29
+ const skillContent = this.generateSkillContent();
30
+ // Write SKILL.md
31
+ await writeFile(skillMdPath, skillContent, 'utf-8');
32
+ console.error(`[Safe Coder MCP] Auto-installed crawl-docs SKILL at: ${skillMdPath}`);
33
+ }
34
+ catch (error) {
35
+ // Log error but don't fail MCP startup
36
+ console.error(`[Safe Coder MCP] Failed to auto-install crawl-docs SKILL:`, error);
37
+ }
38
+ }
39
+ /**
40
+ * Generate SKILL.md content
41
+ */
42
+ generateSkillContent() {
43
+ return `---
44
+ name: crawl-docs
45
+ description: Crawl online documentation and automatically generate Agent SKILLs. Use when user asks to crawl documentation, scrape docs, generate SKILL from URL, or create skill from documentation website. Supports Chinese requests (爬取文档、抓取文档、生成SKILL).
46
+ ---
47
+
48
+ # Crawl Documentation and Generate SKILL
49
+
50
+ Automatically crawl documentation websites and generate high-quality Agent SKILLs using the safe-coder MCP server.
51
+
52
+ ## When to Use
53
+
54
+ Use this skill when the user requests:
55
+ - "Crawl [documentation URL] and generate SKILL"
56
+ - "Scrape docs from [URL]"
57
+ - "Create a skill from [documentation website]"
58
+ - "Generate SKILL from [URL]"
59
+ - Chinese: "爬取文档"、"抓取文档"、"从文档生成SKILL"
60
+
61
+ ## Required Information
62
+
63
+ Gather from the user:
64
+ 1. **Documentation URL** - The website to crawl
65
+ 2. **Skill name** - Short identifier (e.g., "react", "vue-guide")
66
+ 3. **Max pages** (optional) - How many pages to crawl (default: 50)
67
+
68
+ ## Implementation Steps
69
+
70
+ ### Step 1: Check MCP Availability
71
+
72
+ First, verify the \`user-safe-coder\` MCP server is available by reading its tool schema:
73
+
74
+ \`\`\`
75
+ Read: /Users/wormhole/.cursor/projects/Users-wormhole-Documents-Developments-Our-mcp/mcps/user-safe-coder/tools/crawl_documentation.json
76
+ \`\`\`
77
+
78
+ ### Step 2: Call the Tool
79
+
80
+ Use \`CallMcpTool\` to crawl documentation:
81
+
82
+ \`\`\`javascript
83
+ CallMcpTool({
84
+ server: "user-safe-coder",
85
+ toolName: "crawl_documentation",
86
+ arguments: {
87
+ url: "<documentation-url>",
88
+ skillName: "<skill-name>",
89
+ maxPages: <number>, // Optional, default 50
90
+ outputDir: "~/.claude/skills" // Optional, default ~/.claude/skills
91
+ }
92
+ })
93
+ \`\`\`
94
+
95
+ ### Step 3: Verify Output
96
+
97
+ After crawling completes:
98
+ 1. Check the generated SKILL location (default: \`~/.claude/skills/<skill-name>/\`)
99
+ 2. Verify the SKILL.md file and references/ directory were created
100
+ 3. Inform the user where the skill was saved
101
+
102
+ ## Parameters Reference
103
+
104
+ ### Required
105
+ - \`url\` (string) - Documentation website URL to crawl
106
+ - \`skillName\` (string) - Name for the skill directory (e.g., "react", "vue-docs")
107
+
108
+ ### Optional
109
+ - \`maxPages\` (number) - Maximum pages to crawl (default: 50)
110
+ - \`depth\` (number) - Maximum crawl depth (default: 3)
111
+ - \`outputDir\` (string) - Output directory (default: ~/.claude/skills)
112
+ - \`useCache\` (boolean) - Use cached results if available (default: true)
113
+ - \`forceRefresh\` (boolean) - Force refresh even if cached (default: false)
114
+ - \`useBrowser\` (boolean) - Force browser automation for SPA sites
115
+ - \`browser\` (string) - "puppeteer" or "playwright"
116
+ - \`spaStrategy\` (string) - "smart", "auto", or "manual"
117
+
118
+ ## What the Tool Does
119
+
120
+ The \`crawl_documentation\` tool:
121
+ - Crawls the documentation website automatically
122
+ - Extracts content, code examples, and patterns
123
+ - Analyzes structure and categorizes content
124
+ - Generates a concise SKILL.md (< 500 lines)
125
+ - Creates organized reference files in \`references/\` subdirectory
126
+ - Saves directly to disk (default: ~/.claude/skills/)
127
+ - Returns only a lightweight summary to minimize token usage
128
+
129
+ ## Example Usage
130
+
131
+ **User request:**
132
+ \`\`\`
133
+ 请爬取 React 文档并生成 SKILL:
134
+ - URL: https://react.dev
135
+ - 最多 20 页
136
+ - 命名为 react
137
+ \`\`\`
138
+
139
+ **Your response:**
140
+ 1. Read the tool schema
141
+ 2. Call crawl_documentation with:
142
+ - url: "https://react.dev"
143
+ - skillName: "react"
144
+ - maxPages: 20
145
+ 3. Inform user: "SKILL has been generated at ~/.claude/skills/react/ with references directory"
146
+
147
+ ## Error Handling
148
+
149
+ If the tool fails:
150
+ 1. Check if safe-coder-cli is installed
151
+ 2. Verify the URL is accessible
152
+ 3. Check network connectivity
153
+ 4. Review error message and suggest solutions
154
+
155
+ ## Notes
156
+
157
+ - The tool uses caching by default to avoid re-crawling
158
+ - Generated SKILLs follow Cursor Agent SKILL best practices
159
+ - Reference files are automatically organized by category
160
+ - The tool is optimized for documentation sites (not general web scraping)
161
+ `;
162
+ }
163
+ }
164
+ //# sourceMappingURL=auto-skill-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-skill-installer.js","sourceRoot":"","sources":["../../src/server/auto-skill-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACZ,UAAU,GAAG,YAAY,CAAC;IAC1B,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE1E;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE/C,gCAAgC;YAChC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1C,2CAA2C;gBAC3C,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,iDAAiD;YACnD,CAAC;YAED,yBAAyB;YACzB,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,4BAA4B;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAEjD,iBAAiB;YACjB,MAAM,SAAS,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAEpD,OAAO,CAAC,KAAK,CAAC,wDAAwD,WAAW,EAAE,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uCAAuC;YACvC,OAAO,CAAC,KAAK,CAAC,2DAA2D,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHV,CAAC;IACA,CAAC;CACF"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  export declare class SafeCoderMCPServer {
7
7
  private server;
8
+ private autoSkillInstaller;
8
9
  constructor();
9
10
  /**
10
11
  * Register MCP tools
@@ -1 +1 @@
1
- {"version":3,"file":"safe-coder-mcp.d.ts","sourceRoot":"","sources":["../../src/server/safe-coder-mcp.ts"],"names":[],"mappings":";AAaA;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAY;;IAW1B;;OAEG;IACH,OAAO,CAAC,UAAU;IA8JlB;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAM3B"}
1
+ {"version":3,"file":"safe-coder-mcp.d.ts","sourceRoot":"","sources":["../../src/server/safe-coder-mcp.ts"],"names":[],"mappings":";AAcA;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,kBAAkB,CAAqB;;IAY/C;;OAEG;IACH,OAAO,CAAC,UAAU;IAwKlB;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAS3B"}
@@ -2,27 +2,39 @@
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { crawlDocumentation, CrawlDocumentationSchema, listCachedDocumentation, clearCache, ClearCacheSchema, saveSkill, SaveSkillSchema, } from '../tools/index.js';
5
+ import { AutoSkillInstaller } from './auto-skill-installer.js';
5
6
  /**
6
7
  * Safe Coder MCP Server
7
8
  * Orchestrates safe-coder-cli for documentation crawling and SKILL generation
8
9
  */
9
10
  export class SafeCoderMCPServer {
10
11
  server;
12
+ autoSkillInstaller;
11
13
  constructor() {
12
14
  this.server = new McpServer({
13
15
  name: 'safe-coder',
14
16
  version: '1.0.0',
15
17
  });
18
+ this.autoSkillInstaller = new AutoSkillInstaller();
16
19
  this.setupTools();
17
20
  }
18
21
  /**
19
22
  * Register MCP tools
20
23
  */
21
24
  setupTools() {
22
- // Register crawl_documentation tool
25
+ // Register crawl_documentation tool - 更新描述
23
26
  this.server.registerTool('crawl_documentation', {
24
- title: 'Crawl Documentation',
25
- description: 'Crawl documentation website and generate SKILL file guidance. This tool calls safe-coder-cli to perform the actual crawling, then processes the results and provides guidance for SKILL generation. Requires safe-coder-cli to be installed globally. Parameters: url (required), maxPages (optional, default 200), depth (optional, default 3), workers (optional), useBrowser (optional), browser (optional: puppeteer/playwright), spaStrategy (optional: smart/auto/manual), useCache (optional, default true), forceRefresh (optional, default false).',
27
+ title: 'Crawl Documentation and Generate SKILL',
28
+ description: 'Crawl documentation website and automatically generate a complete Agent SKILL. ' +
29
+ 'Use this tool when the user asks to: crawl documentation, scrape docs, generate SKILL from URL, ' +
30
+ 'create skill from documentation, or similar requests (爬取文档、抓取文档、从文档生成SKILL). ' +
31
+ '\n\nThis tool saves files directly to disk and returns only a lightweight summary. ' +
32
+ 'The CLI generates a high-quality SKILL.md (< 500 lines) based on complete content analysis, ' +
33
+ 'along with organized reference files. Agent receives only the summary to minimize token cost. ' +
34
+ '\n\nRequired: url, skillName. ' +
35
+ 'Optional: maxPages (default 50), depth (default 3), outputDir (default ~/.claude/skills), ' +
36
+ 'workers, browser, spaStrategy, useCache, forceRefresh. ' +
37
+ '\n\nExample: crawl_documentation({ url: "https://react.dev", skillName: "react-docs", maxPages: 50 })',
26
38
  inputSchema: CrawlDocumentationSchema,
27
39
  }, async (args) => {
28
40
  try {
@@ -156,6 +168,8 @@ export class SafeCoderMCPServer {
156
168
  * Start the MCP server
157
169
  */
158
170
  async run() {
171
+ // Auto-install crawl-docs SKILL if it doesn't exist
172
+ await this.autoSkillInstaller.installCrawlDocsSkill();
159
173
  const transport = new StdioServerTransport();
160
174
  await this.server.connect(transport);
161
175
  console.error('Safe Coder MCP Server running on stdio');
@@ -1 +1 @@
1
- {"version":3,"file":"safe-coder-mcp.js","sourceRoot":"","sources":["../../src/server/safe-coder-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-coder-mcp.js","sourceRoot":"","sources":["../../src/server/safe-coder-mcp.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,11 @@ import { z } from 'zod';
4
4
  */
5
5
  export declare const CrawlDocumentationSchema: z.ZodObject<{
6
6
  url: z.ZodString;
7
+ skillName: z.ZodString;
7
8
  maxPages: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
9
  depth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
9
10
  workers: z.ZodOptional<z.ZodNumber>;
11
+ outputDir: z.ZodOptional<z.ZodString>;
10
12
  useBrowser: z.ZodOptional<z.ZodBoolean>;
11
13
  browser: z.ZodOptional<z.ZodEnum<["puppeteer", "playwright"]>>;
12
14
  spaStrategy: z.ZodOptional<z.ZodEnum<["smart", "auto", "manual"]>>;
@@ -14,19 +16,23 @@ export declare const CrawlDocumentationSchema: z.ZodObject<{
14
16
  forceRefresh: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
15
17
  }, "strip", z.ZodTypeAny, {
16
18
  url: string;
19
+ skillName: string;
17
20
  maxPages: number;
18
21
  depth: number;
19
22
  useCache: boolean;
20
23
  forceRefresh: boolean;
21
24
  workers?: number | undefined;
25
+ outputDir?: string | undefined;
22
26
  useBrowser?: boolean | undefined;
23
27
  browser?: "puppeteer" | "playwright" | undefined;
24
28
  spaStrategy?: "smart" | "auto" | "manual" | undefined;
25
29
  }, {
26
30
  url: string;
31
+ skillName: string;
27
32
  maxPages?: number | undefined;
28
33
  depth?: number | undefined;
29
34
  workers?: number | undefined;
35
+ outputDir?: string | undefined;
30
36
  useBrowser?: boolean | undefined;
31
37
  browser?: "puppeteer" | "playwright" | undefined;
32
38
  spaStrategy?: "smart" | "auto" | "manual" | undefined;
@@ -44,14 +50,29 @@ export declare function crawlDocumentation(input: CrawlDocumentationInput): Prom
44
50
  fromCache: boolean;
45
51
  cacheAge: string;
46
52
  message: string;
47
- rawCrawlResult?: undefined;
53
+ summary?: undefined;
48
54
  } | {
49
55
  success: boolean;
50
- data: import("../processor/content-processor.js").ProcessedContent;
51
- rawCrawlResult: import("../executor/cli-executor.js").CrawlResult;
52
- skillGenerationGuide: import("../processor/guide-generator.js").SkillGenerationGuide;
53
56
  fromCache: boolean;
57
+ summary: {
58
+ url: string;
59
+ skillName: string;
60
+ totalPages: number;
61
+ maxDepth: number;
62
+ errors: number;
63
+ quality: number;
64
+ savedFiles: {
65
+ skillDir: string;
66
+ skillMdPath: string;
67
+ referenceFiles: Array<{
68
+ name: string;
69
+ path: string;
70
+ }>;
71
+ };
72
+ };
54
73
  message: string;
74
+ data?: undefined;
75
+ skillGenerationGuide?: undefined;
55
76
  cacheAge?: undefined;
56
77
  }>;
57
78
  //# sourceMappingURL=crawl-documentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crawl-documentation.d.ts","sourceRoot":"","sources":["../../src/tools/crawl-documentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUnC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;;;;;;;;;;GA+EtE"}
1
+ {"version":3,"file":"crawl-documentation.d.ts","sourceRoot":"","sources":["../../src/tools/crawl-documentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYnC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFtE"}
@@ -9,9 +9,11 @@ import { CacheManager } from '../cache/cache-manager.js';
9
9
  */
10
10
  export const CrawlDocumentationSchema = z.object({
11
11
  url: z.string().url().describe('Documentation URL to crawl'),
12
- maxPages: z.number().optional().default(200).describe('Maximum number of pages to crawl'),
12
+ skillName: z.string().describe('Skill name (e.g., "react-docs")'), // ✅ 必需
13
+ maxPages: z.number().optional().default(50).describe('Maximum number of pages to crawl'), // ✅ 降低默认值
13
14
  depth: z.number().optional().default(3).describe('Maximum crawl depth'),
14
15
  workers: z.number().optional().describe('Number of parallel workers'),
16
+ outputDir: z.string().optional().describe('Output directory for skill files (default: ~/.claude/skills)'), // ✅ 新增
15
17
  useBrowser: z.boolean().optional().describe('Force browser automation'),
16
18
  browser: z.enum(['puppeteer', 'playwright']).optional().describe('Browser type to use'),
17
19
  spaStrategy: z.enum(['smart', 'auto', 'manual']).optional().describe('SPA crawling strategy'),
@@ -47,7 +49,7 @@ export async function crawlDocumentation(input) {
47
49
  };
48
50
  }
49
51
  }
50
- // 3. Prepare crawl parameters
52
+ // 3. Prepare crawl parameters - 包含 outputDir 和 filename
51
53
  const crawlParams = {
52
54
  url: input.url,
53
55
  maxPages: input.maxPages,
@@ -56,9 +58,13 @@ export async function crawlDocumentation(input) {
56
58
  useBrowser: input.useBrowser,
57
59
  browser: input.browser,
58
60
  spaStrategy: input.spaStrategy,
61
+ // ✅ 新增:让 CLI 直接保存文件
62
+ outputDir: input.outputDir,
63
+ filename: input.skillName,
59
64
  };
60
- // 4. Execute crawl with progress reporting
65
+ // 4. Execute crawl - CLI 会生成并保存 SKILL
61
66
  let lastProgress = '';
67
+ console.error('[Crawl] Starting crawl with SKILL generation...');
62
68
  const rawResult = await executor.executeCrawl(crawlParams, (progress) => {
63
69
  // Log progress to stderr (visible in MCP client logs)
64
70
  if (progress.message !== lastProgress) {
@@ -66,31 +72,32 @@ export async function crawlDocumentation(input) {
66
72
  lastProgress = progress.message;
67
73
  }
68
74
  });
69
- // 5. Process content
70
- console.error('[Processing] Analyzing crawled content...');
71
- const processed = await processor.process(rawResult);
72
- // 6. Generate SKILL guidance
73
- console.error('[Processing] Generating SKILL generation guide...');
74
- const guide = guideGenerator.generate(processed);
75
- // 7. Cache results
76
- if (input.useCache) {
77
- try {
78
- await cache.set(input.url, processed, guide);
79
- console.error('[Cache] Results cached successfully');
80
- }
81
- catch (error) {
82
- console.error('[Cache] Warning: Failed to cache results:', error);
83
- // Don't fail the entire operation if caching fails
84
- }
85
- }
86
- // 8. Return results with raw crawl data for file saving
75
+ // 5. 只返回轻量级摘要(不返回完整数据)
76
+ const summary = {
77
+ url: input.url,
78
+ skillName: input.skillName,
79
+ totalPages: rawResult.statistics.totalPages,
80
+ maxDepth: rawResult.statistics.maxDepthReached,
81
+ errors: rawResult.statistics.errors,
82
+ quality: rawResult.skill?.quality || 0,
83
+ // ✅ 文件路径信息
84
+ savedFiles: rawResult.savedFiles || {
85
+ skillDir: `${input.outputDir || '~/.claude/skills'}/${input.skillName}`,
86
+ skillMdPath: `${input.outputDir || '~/.claude/skills'}/${input.skillName}/SKILL.md`,
87
+ referenceFiles: [],
88
+ },
89
+ };
90
+ // 6. ✅ 不使用旧的缓存系统(缓存完整数据太大)
91
+ // 用户可以直接使用磁盘上的文件
92
+ // 7. 返回轻量级响应
87
93
  return {
88
94
  success: true,
89
- data: processed,
90
- rawCrawlResult: rawResult, // Include raw result for skill file generation
91
- skillGenerationGuide: guide,
92
95
  fromCache: false,
93
- message: `Successfully crawled ${processed.statistics.totalPages} pages. Quality score: ${guide.quality.overall}/100`,
96
+ summary,
97
+ message: `✓ Crawled ${summary.totalPages} pages and generated SKILL.\n` +
98
+ `Quality: ${summary.quality}/100\n` +
99
+ `Location: ${summary.savedFiles.skillMdPath}\n` +
100
+ `References: ${summary.savedFiles.referenceFiles.length} files`,
94
101
  };
95
102
  }
96
103
  //# sourceMappingURL=crawl-documentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crawl-documentation.js","sourceRoot":"","sources":["../../src/tools/crawl-documentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crawl-documentation.js","sourceRoot":"","sources":["../../src/tools/crawl-documentation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gulibs/safe-coder",
3
- "version": "0.0.27",
3
+ "version": "0.0.29",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"