sumulige-claude 1.5.1 → 1.6.0

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 (223) hide show
  1. package/.claude/hooks/hook-registry.json +0 -15
  2. package/.claude/rules/coding-style.md +18 -7
  3. package/.claude/rules/hooks.md +15 -4
  4. package/.claude/rules/performance.md +15 -5
  5. package/.claude/rules/security.md +140 -4
  6. package/.claude/rules/testing.md +138 -9
  7. package/.claude/rules/web-design-standard.md +16 -5
  8. package/.claude/skills/algorithmic-art/metadata.yaml +28 -0
  9. package/.claude/skills/api-tester/SKILL.md +61 -0
  10. package/.claude/skills/api-tester/examples/basic.md +3 -0
  11. package/.claude/skills/api-tester/metadata.yaml +30 -0
  12. package/.claude/skills/api-tester/templates/default.md +3 -0
  13. package/.claude/skills/brand-guidelines/metadata.yaml +26 -0
  14. package/.claude/skills/canvas-design/metadata.yaml +27 -0
  15. package/.claude/skills/code-reviewer-123/SKILL.md +61 -0
  16. package/.claude/skills/code-reviewer-123/examples/basic.md +3 -0
  17. package/.claude/skills/code-reviewer-123/metadata.yaml +30 -0
  18. package/.claude/skills/code-reviewer-123/templates/default.md +3 -0
  19. package/.claude/skills/doc-coauthoring/metadata.yaml +27 -0
  20. package/.claude/skills/docx/metadata.yaml +30 -0
  21. package/.claude/skills/frontend-design/metadata.yaml +28 -0
  22. package/.claude/skills/internal-comms/metadata.yaml +28 -0
  23. package/.claude/skills/mcp-builder/metadata.yaml +26 -0
  24. package/.claude/skills/my-skill/SKILL.md +61 -0
  25. package/.claude/skills/my-skill/examples/basic.md +3 -0
  26. package/.claude/skills/my-skill/metadata.yaml +30 -0
  27. package/.claude/skills/my-skill/templates/default.md +3 -0
  28. package/.claude/skills/pdf/metadata.yaml +29 -0
  29. package/.claude/skills/pptx/metadata.yaml +29 -0
  30. package/.claude/skills/react-best-practices/metadata.yaml +26 -0
  31. package/.claude/skills/react-node-practices/SKILL.md +409 -0
  32. package/.claude/skills/react-node-practices/metadata.yaml +56 -0
  33. package/.claude/skills/skill-creator/metadata.yaml +25 -0
  34. package/.claude/skills/slack-gif-creator/metadata.yaml +28 -0
  35. package/.claude/skills/test-skill-name/SKILL.md +61 -0
  36. package/.claude/skills/test-skill-name/examples/basic.md +3 -0
  37. package/.claude/skills/test-skill-name/metadata.yaml +30 -0
  38. package/.claude/skills/test-skill-name/templates/default.md +3 -0
  39. package/.claude/skills/test-workflow/metadata.yaml +32 -0
  40. package/.claude/skills/theme-factory/metadata.yaml +26 -0
  41. package/.claude/skills/threejs-fundamentals/metadata.yaml +27 -0
  42. package/.claude/skills/web-artifacts-builder/metadata.yaml +30 -0
  43. package/.claude/skills/web-design-guidelines/metadata.yaml +26 -0
  44. package/.claude/skills/webapp-testing/metadata.yaml +26 -0
  45. package/.claude/skills/xlsx/metadata.yaml +29 -0
  46. package/LICENSE +21 -0
  47. package/README.md +280 -529
  48. package/cli.js +19 -3
  49. package/package.json +29 -3
  50. package/template/.codex/README.md +69 -0
  51. package/template/.codex/config.toml +56 -0
  52. package/template/AGENTS.md +94 -0
  53. package/.claude/.kickoff-hint.txt +0 -52
  54. package/.claude/.sumulige-claude-version +0 -1
  55. package/.claude/.version +0 -1
  56. package/.claude/AGENTS.md +0 -42
  57. package/.claude/ANCHORS.md +0 -40
  58. package/.claude/CLAUDE.md +0 -138
  59. package/.claude/MEMORY.md +0 -69
  60. package/.claude/PROJECT_LOG.md +0 -101
  61. package/.claude/THINKING_CHAIN_GUIDE.md +0 -287
  62. package/.claude/USAGE.md +0 -175
  63. package/.claude/boris-optimizations.md +0 -167
  64. package/.claude/handoffs/INDEX.md +0 -21
  65. package/.claude/handoffs/LATEST.md +0 -76
  66. package/.claude/handoffs/handoff_2026-01-22T13-07-04-757Z.md +0 -76
  67. package/.claude/quality-gate.json +0 -82
  68. package/.claude/rag/skill-index.json +0 -135
  69. package/.claude/settings.json +0 -99
  70. package/.claude/settings.local.json +0 -175
  71. package/.claude/templates/PROJECT_KICKOFF.md +0 -89
  72. package/.claude/templates/PROJECT_PROPOSAL.md +0 -227
  73. package/.claude/templates/TASK_PLAN.md +0 -121
  74. package/.claude/templates/hooks/README.md +0 -302
  75. package/.claude/templates/hooks/hook.sh.template +0 -94
  76. package/.claude/templates/hooks/user-prompt-submit.cjs.template +0 -116
  77. package/.claude/templates/hooks/user-response-submit.cjs.template +0 -94
  78. package/.claude/templates/hooks/validate.js +0 -173
  79. package/.claude/templates/tasks/develop.md +0 -69
  80. package/.claude/templates/tasks/research.md +0 -64
  81. package/.claude/templates/tasks/test.md +0 -96
  82. package/.claude/thinking-routes/.last-sync +0 -1
  83. package/.claude/thinking-routes/QUICKREF.md +0 -98
  84. package/.claude/workflow/document-scanner.js +0 -426
  85. package/.claude/workflow/knowledge-engine.js +0 -941
  86. package/.claude/workflow/notebooklm/browser.js +0 -1028
  87. package/.claude/workflow/phases/phase1-research.js +0 -578
  88. package/.claude/workflow/phases/phase1-research.ts +0 -465
  89. package/.claude/workflow/phases/phase2-approve.js +0 -722
  90. package/.claude/workflow/phases/phase3-plan.js +0 -1200
  91. package/.claude/workflow/phases/phase4-develop.js +0 -894
  92. package/.claude/workflow/search-cache.js +0 -230
  93. package/.claude/workflow/templates/approval.md +0 -315
  94. package/.claude/workflow/templates/development.md +0 -377
  95. package/.claude/workflow/templates/planning.md +0 -328
  96. package/.claude/workflow/templates/research.md +0 -250
  97. package/.claude/workflow/types.js +0 -37
  98. package/.claude/workflow/web-search.js +0 -278
  99. package/.claude-plugin/marketplace.json +0 -71
  100. package/.github/workflows/sync-skills.yml +0 -74
  101. package/.versionrc +0 -25
  102. package/AGENTS.md +0 -580
  103. package/CHANGELOG.md +0 -481
  104. package/CLAUDE-template.md +0 -114
  105. package/DEV_TOOLS_GUIDE.md +0 -190
  106. package/PROJECT_STRUCTURE.md +0 -266
  107. package/Q&A.md +0 -325
  108. package/config/defaults.json +0 -34
  109. package/config/official-skills.json +0 -183
  110. package/config/quality-gate.json +0 -67
  111. package/config/skill-categories.json +0 -40
  112. package/config/version-manifest.json +0 -85
  113. package/demos/power-3d-scatter.html +0 -683
  114. package/development/cache/web-search/search_1193d605f8eb364651fc2f2041b58a31.json +0 -36
  115. package/development/cache/web-search/search_3798bf06960edc125f744a1abb5b72c5.json +0 -36
  116. package/development/cache/web-search/search_37c7d4843a53f0d83f1122a6f908a2a3.json +0 -36
  117. package/development/cache/web-search/search_44166fa0153709ee168485a22aa0ab40.json +0 -36
  118. package/development/cache/web-search/search_4deaebb1f77e86a8ca066dc5a49c59fd.json +0 -36
  119. package/development/cache/web-search/search_94da91789466070a7f545612e73c7372.json +0 -36
  120. package/development/cache/web-search/search_dd5de8491b8b803a3cb01339cd210fb0.json +0 -36
  121. package/development/knowledge-base/.index.clean.json +0 -1
  122. package/development/knowledge-base/.index.json +0 -486
  123. package/development/knowledge-base/test-best-practices.md +0 -29
  124. package/development/projects/proj_mkh1pazz_ixmt1/phase1/feasibility-report.md +0 -160
  125. package/development/projects/proj_mkh4jvnb_z7rwf/phase1/feasibility-report.md +0 -160
  126. package/development/projects/proj_mkh4jxkd_ewz5a/phase1/feasibility-report.md +0 -160
  127. package/development/projects/proj_mkh4k84n_ni73k/phase1/feasibility-report.md +0 -160
  128. package/development/projects/proj_mkh4wfyd_u9w88/phase1/feasibility-report.md +0 -160
  129. package/development/projects/proj_mkh4wsbo_iahvf/development/projects/proj_mkh4xbpg_4na5w/phase1/feasibility-report.md +0 -160
  130. package/development/projects/proj_mkh4wsbo_iahvf/phase1/feasibility-report.md +0 -160
  131. package/development/projects/proj_mkh4xulg_1ka8x/phase1/feasibility-report.md +0 -160
  132. package/development/projects/proj_mkh4xwhj_gch8j/phase1/feasibility-report.md +0 -160
  133. package/development/projects/proj_mkh4y2qk_9lm8z/phase1/feasibility-report.md +0 -160
  134. package/development/projects/proj_mkh4y2qk_9lm8z/phase2/requirements.md +0 -226
  135. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/PRD.md +0 -345
  136. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/TASK_PLAN.md +0 -284
  137. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/prototype/README.md +0 -14
  138. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/DEVELOPMENT_LOG.md +0 -35
  139. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/TASKS.md +0 -34
  140. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/.env.example +0 -5
  141. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/README.md +0 -60
  142. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/package.json +0 -25
  143. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/index.js +0 -70
  144. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/routes/index.js +0 -48
  145. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/health.test.js +0 -20
  146. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/jest.config.js +0 -21
  147. package/development/projects/proj_mkh7veqg_3lypc/phase1/feasibility-report.md +0 -160
  148. package/development/projects/proj_mkh7veqg_3lypc/phase2/requirements.md +0 -226
  149. package/development/projects/proj_mkh7veqg_3lypc/phase3/PRD.md +0 -345
  150. package/development/projects/proj_mkh7veqg_3lypc/phase3/TASK_PLAN.md +0 -284
  151. package/development/projects/proj_mkh7veqg_3lypc/phase3/prototype/README.md +0 -14
  152. package/development/projects/proj_mkh8k8fo_rmqn5/phase1/feasibility-report.md +0 -160
  153. package/development/projects/proj_mkh8xyhy_1vshq/phase1/feasibility-report.md +0 -178
  154. package/development/projects/proj_mkh8zddd_dhamf/phase1/feasibility-report.md +0 -377
  155. package/development/projects/proj_mkh8zddd_dhamf/phase2/requirements.md +0 -442
  156. package/development/projects/proj_mkh8zddd_dhamf/phase3/api-design.md +0 -800
  157. package/development/projects/proj_mkh8zddd_dhamf/phase3/architecture.md +0 -625
  158. package/development/projects/proj_mkh8zddd_dhamf/phase3/data-model.md +0 -830
  159. package/development/projects/proj_mkh8zddd_dhamf/phase3/risks.md +0 -957
  160. package/development/projects/proj_mkh8zddd_dhamf/phase3/wbs.md +0 -381
  161. package/development/todos/.state.json +0 -19
  162. package/development/todos/INDEX.md +0 -63
  163. package/development/todos/active/_README.md +0 -49
  164. package/development/todos/archived/_README.md +0 -11
  165. package/development/todos/backlog/_README.md +0 -11
  166. package/development/todos/backlog/mcp-integration.md +0 -35
  167. package/development/todos/completed/_README.md +0 -11
  168. package/development/todos/completed/boris-optimizations.md +0 -39
  169. package/development/todos/completed/develop/local-knowledge-index.md +0 -85
  170. package/development/todos/completed/develop/todo-system.md +0 -47
  171. package/development/todos/completed/develop/web-search-integration.md +0 -83
  172. package/development/todos/completed/test/phase1-e2e-test.md +0 -103
  173. package/docs/DEVELOPMENT.md +0 -461
  174. package/docs/MARKETPLACE.md +0 -352
  175. package/docs/RELEASE.md +0 -93
  176. package/jest.config.js +0 -63
  177. package/lib/commands.js +0 -3588
  178. package/lib/config-manager.js +0 -441
  179. package/lib/config-schema.js +0 -408
  180. package/lib/config-validator.js +0 -330
  181. package/lib/config.js +0 -122
  182. package/lib/errors.js +0 -305
  183. package/lib/incremental-sync.js +0 -274
  184. package/lib/marketplace.js +0 -487
  185. package/lib/migrations.js +0 -154
  186. package/lib/permission-audit.js +0 -255
  187. package/lib/quality-gate.js +0 -431
  188. package/lib/quality-rules.js +0 -373
  189. package/lib/utils.js +0 -150
  190. package/lib/version-check.js +0 -169
  191. package/lib/version-manifest.js +0 -171
  192. package/project-paradigm.md +0 -313
  193. package/prompts/how-to-find.md +0 -163
  194. package/prompts/linus-architect.md +0 -71
  195. package/prompts/software-architect.md +0 -173
  196. package/prompts/web-designer.md +0 -249
  197. package/scripts/fix-hooks.mjs +0 -97
  198. package/scripts/sync-external.mjs +0 -298
  199. package/scripts/sync-to-home.sh +0 -108
  200. package/scripts/update-registry.mjs +0 -325
  201. package/sources.yaml +0 -83
  202. package/tests/README.md +0 -263
  203. package/tests/commands.test.js +0 -1086
  204. package/tests/config-manager.test.js +0 -677
  205. package/tests/config-schema.test.js +0 -425
  206. package/tests/config-validator.test.js +0 -436
  207. package/tests/config.test.js +0 -100
  208. package/tests/errors.test.js +0 -477
  209. package/tests/manual/phase1-e2e.sh +0 -389
  210. package/tests/manual/phase2-test-cases.md +0 -311
  211. package/tests/manual/phase3-test-cases.md +0 -309
  212. package/tests/manual/phase4-test-cases.md +0 -414
  213. package/tests/manual/test-cases.md +0 -417
  214. package/tests/marketplace.test.js +0 -420
  215. package/tests/migrations.test.js +0 -187
  216. package/tests/quality-gate.test.js +0 -679
  217. package/tests/quality-rules.test.js +0 -619
  218. package/tests/sync-external.test.js +0 -214
  219. package/tests/update-registry.test.js +0 -251
  220. package/tests/utils.test.js +0 -171
  221. package/tests/version-check.test.js +0 -75
  222. package/tests/web-search.test.js +0 -392
  223. package/thinkinglens-silent.md +0 -138
@@ -1,250 +0,0 @@
1
- # Phase 1 Research Prompt Template
2
-
3
- > **Role**: NotebookLM Knowledge Engine
4
- > **Goal**: Transform user idea into comprehensive feasibility analysis
5
-
6
- ---
7
-
8
- ## System Context
9
-
10
- You are the **Phase 1 Research Engine** for a 5-phase AI-assisted development workflow. Your role is to:
11
-
12
- 1. **Understand** the user's idea/requirement deeply
13
- 2. **Connect dots** by finding related work, patterns, and decisions
14
- 3. **Research** industry best practices using both local knowledge and web search
15
- 4. **Assess** feasibility with concrete technical analysis
16
-
17
- **Key Principle**: You provide **zero-hallucination** analysis. If you don't know something from the knowledge base or web search, explicitly state it.
18
-
19
- ---
20
-
21
- ## Input Format
22
-
23
- ```
24
- USER IDEA: {{userIdea}}
25
-
26
- CONTEXT:
27
- {{additionalContext}}
28
- ```
29
-
30
- ---
31
-
32
- ## Research Process
33
-
34
- ### Step 1: Requirement Structuring (30 minutes)
35
-
36
- Extract and clarify:
37
- - **Core problem** being solved
38
- - **Target users** and their pain points
39
- - **Key features** requested
40
- - **Constraints** (technical, time, resources)
41
- - **Assumptions** made
42
-
43
- Output format:
44
- ```markdown
45
- ## Requirements Summary
46
-
47
- ### Problem Statement
48
- [What problem are we solving?]
49
-
50
- ### Target Users
51
- [Who will use this? What are their pain points?]
52
-
53
- ### Key Features
54
- 1. [Feature 1]
55
- 2. [Feature 2]
56
- ...
57
-
58
- ### Constraints
59
- - [Constraint 1]
60
- - [Constraint 2]
61
-
62
- ### Assumptions
63
- - [Assumption 1]
64
- - [Assumption 2]
65
- ```
66
-
67
- ---
68
-
69
- ### Step 2: Correlation Analysis (Connect The Dots) (45 minutes)
70
-
71
- Search the knowledge base for:
72
- - **Related projects** with similar features
73
- - **Reusable components** and patterns
74
- - **Historical decisions** and their outcomes
75
- - **Lessons learned** from past projects
76
-
77
- Output format:
78
- ```markdown
79
- ## Correlation Analysis
80
-
81
- ### Research Plan (研究计划)
82
- - **Key Objectives**: 每个选项要回答的核心问题,评估需要的数据/信息
83
- - **Research Methods**: 收集和分析数据的方法,使用的工具或方法论
84
- - **Evaluation Criteria**: 比较选项的指标/基准,可行性判断标准
85
- - **Expected Outcomes**: 预期的研究发现,研究后的下一步行动
86
-
87
- ### Related Projects
88
- | Project | Similarity | Reusable Components |
89
- |---------|------------|---------------------|
90
- | [Project A] | 85% | [Component list] |
91
- | [Project B] | 60% | [Component list] |
92
-
93
- ### Overlapping Technology
94
- - [Tech stack overlap]
95
- - [Shared libraries]
96
- - [Common patterns]
97
-
98
- ### Lessons from History
99
- - [Lesson 1]: [Context]
100
- - [Lesson 2]: [Context]
101
-
102
- ### Risks Based on History
103
- - [Risk from past project]: [How we'll address it]
104
- ```
105
-
106
- **Completion Criteria (完成验收标准)**:
107
-
108
- 完成关联分析后,应能够回答以下问题:
109
-
110
- 1. **Key Objectives (关键目标)**
111
- - 每个选项要回答的核心问题是什么?
112
- - 评估需要哪些数据/信息?
113
-
114
- 2. **Research Methods (研究方法)**
115
- - 如何收集和分析数据?
116
- - 使用的工具或方法论是什么?
117
-
118
- 3. **Evaluation Criteria (评估标准)**
119
- - 比较选项的指标、基准或定性因素是什么?
120
- - 可行性/成功的判断标准是什么?
121
-
122
- 4. **Expected Outcomes (预期成果)**
123
- - 可能的研究发现或结果是什么?
124
- - 研究后的下一步行动是什么?
125
-
126
- 如果以上问题都有明确答案,则 Step 2 完成。
127
-
128
- ---
129
-
130
- ### Step 3: Best Practices Research (45 minutes)
131
-
132
- For each key area (architecture, tech stack, security, UX, etc.):
133
-
134
- 1. **Query local knowledge base** first
135
- 2. **Search web** for latest practices if needed
136
- 3. **Synthesize** recommendations
137
-
138
- Output format:
139
- ```markdown
140
- ## Industry Best Practices
141
-
142
- ### [Area: e.g., Frontend Architecture]
143
- **Practice**: [Specific practice]
144
- **Rationale**: [Why this is recommended]
145
- **Sources**: [Citations]
146
- **Applicability**: [How this applies to current project]
147
-
148
- ### [Area: e.g., API Design]
149
- ...
150
- ```
151
-
152
- ---
153
-
154
- ### Step 4: Feasibility Assessment (30 minutes)
155
-
156
- Assess across multiple dimensions:
157
-
158
- ```markdown
159
- ## Feasibility Assessment
160
-
161
- ### Technical Feasibility: ⭐⭐⭐⭐☆ (4/5)
162
- **Strengths**:
163
- - [Strength 1]
164
- - [Strength 2]
165
-
166
- **Challenges**:
167
- - [Challenge 1]: [Mitigation strategy]
168
- - [Challenge 2]: [Mitigation strategy]
169
-
170
- ### Time Estimate: 4 hours
171
- **Breakdown**:
172
- - Research & Planning: 30m
173
- - Design: 1h
174
- - Implementation: 2h
175
- - Testing: 30m
176
-
177
- ### Complexity: Medium
178
- **Reasoning**: [Explain complexity assessment]
179
-
180
- ### Risk Assessment
181
- | Risk | Severity | Mitigation |
182
- |------|----------|------------|
183
- | [Risk 1] | High | [Mitigation] |
184
- | [Risk 2] | Medium | [Mitigation] |
185
- ```
186
-
187
- ---
188
-
189
- ### Step 5: Recommendations (15 minutes)
190
-
191
- ```markdown
192
- ## Recommendations
193
-
194
- ### Recommended Tech Stack
195
- - [Frontend]: [Choice + rationale]
196
- - [Backend]: [Choice + rationale]
197
- - [Database]: [Choice + rationale]
198
- - [Other]: [Choice + rationale]
199
-
200
- ### Suggested Architecture
201
- [High-level architecture description]
202
-
203
- ### Potential Issues to Watch
204
- 1. [Issue 1]: [Monitoring approach]
205
- 2. [Issue 2]: [Monitoring approach]
206
-
207
- ### Next Steps (Phase 2)
208
- 1. [Step 1]
209
- 2. [Step 2]
210
- 3. [Step 3]
211
- ```
212
-
213
- ---
214
-
215
- ## Quality Checklist
216
-
217
- Before finalizing, ensure:
218
-
219
- - [ ] Requirement summary is clear and complete
220
- - [ ] Correlation analysis found related work/patterns
221
- - [ ] Best practices are cited with sources
222
- - [ ] Feasibility has concrete ratings (not vague)
223
- - [ ] Time estimate is justified
224
- - [ ] Risks have mitigation strategies
225
- - [ ] Recommendations are actionable
226
-
227
- ---
228
-
229
- ## Output Format
230
-
231
- Final output should be saved as `feasibility-report.md` in:
232
- ```
233
- development/projects/{projectId}/phase1/feasibility-report.md
234
- ```
235
-
236
- ---
237
-
238
- ## Example Output
239
-
240
- See `development/projects/examples/phase1/feasibility-report.md` for a complete example.
241
-
242
- ---
243
-
244
- ## Notes for AI
245
-
246
- - **Be specific**: Use concrete examples, not abstract advice
247
- - **Cite sources**: Always reference where information comes from
248
- - **Quantify**: Use numbers when possible (similarity scores, time estimates)
249
- - **Be honest**: If knowledge is missing, state it explicitly
250
- - **Think ahead**: Consider Phase 2 (approval) - what will Claude need to know?
@@ -1,37 +0,0 @@
1
- /**
2
- * Workflow Type Definitions (JavaScript version)
3
- * Shared types for the NotebookLM + Claude collaboration workflow
4
- */
5
-
6
- // Project phase enum
7
- const ProjectPhase = {
8
- RESEARCH: 'research', // Phase 1: NotebookLM feasibility analysis
9
- APPROVAL: 'approval', // Phase 2: Claude review and consensus
10
- PLANNING: 'planning', // Phase 3: PRD and prototype
11
- DEVELOPMENT: 'development',// Phase 4: Implementation
12
- DEPLOYMENT: 'deployment' // Phase 5: Release
13
- };
14
-
15
- // Project status
16
- const ProjectStatus = {
17
- PENDING: 'pending',
18
- IN_PROGRESS: 'in_progress',
19
- COMPLETED: 'completed',
20
- FAILED: 'failed',
21
- ON_HOLD: 'on_hold'
22
- };
23
-
24
- // Knowledge source types
25
- const KnowledgeSourceType = {
26
- LOCAL_FILE: 'local_file',
27
- LOCAL_DIRECTORY: 'local_directory',
28
- NOTEBOOKLM: 'notebooklm',
29
- WEB_SEARCH: 'web_search',
30
- WEB_URL: 'web_url'
31
- };
32
-
33
- module.exports = {
34
- ProjectPhase,
35
- ProjectStatus,
36
- KnowledgeSourceType
37
- };
@@ -1,278 +0,0 @@
1
- /**
2
- * Web Search Module - Bing HTML-based search
3
- *
4
- * Provides free web search by parsing Bing's HTML results.
5
- */
6
-
7
- const https = require('https');
8
-
9
- // ============================================================================
10
- // Configuration
11
- // ============================================================================
12
-
13
- const SEARCH_TIMEOUT = 10000;
14
- const MAX_RESULTS = 5;
15
- const USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36';
16
-
17
- // ============================================================================
18
- // Web Search Class
19
- // ============================================================================
20
-
21
- class WebSearch {
22
- /**
23
- * Search Bing and return results
24
- */
25
- static async search(query, options = {}) {
26
- const {
27
- maxResults = MAX_RESULTS,
28
- timeout = SEARCH_TIMEOUT
29
- } = options;
30
-
31
- return new Promise((resolve, reject) => {
32
- const encodedQuery = encodeURIComponent(query);
33
- const searchUrl = `https://www.bing.com/search?q=${encodedQuery}&setlang=en`;
34
-
35
- const urlObj = new URL(searchUrl);
36
- const requestOptions = {
37
- hostname: urlObj.hostname,
38
- path: urlObj.pathname + urlObj.search,
39
- method: 'GET',
40
- headers: {
41
- 'User-Agent': USER_AGENT,
42
- 'Accept': 'text/html',
43
- 'Accept-Language': 'en-US,en;q=0.9'
44
- },
45
- timeout: timeout
46
- };
47
-
48
- const req = https.get(requestOptions, (res) => {
49
- // Handle redirects
50
- if (res.statusCode === 301 || res.statusCode === 302) {
51
- const redirectUrl = res.headers.location;
52
- if (redirectUrl) {
53
- this.followRedirect(redirectUrl, options)
54
- .then(resolve)
55
- .catch(reject);
56
- return;
57
- }
58
- }
59
-
60
- if (res.statusCode !== 200) {
61
- reject(new Error(`HTTP ${res.statusCode}`));
62
- return;
63
- }
64
-
65
- let data = '';
66
- res.on('data', (chunk) => {
67
- data += chunk;
68
- });
69
-
70
- res.on('end', () => {
71
- try {
72
- const results = this.parseHTML(data, maxResults);
73
- resolve(results);
74
- } catch (error) {
75
- reject(new Error(`Parse error: ${error.message}`));
76
- }
77
- });
78
- });
79
-
80
- req.on('timeout', () => {
81
- req.destroy();
82
- reject(new Error('Request timed out'));
83
- });
84
-
85
- req.on('error', (error) => {
86
- reject(new Error(`Request failed: ${error.message}`));
87
- });
88
- });
89
- }
90
-
91
- /**
92
- * Follow HTTP redirect
93
- */
94
- static followRedirect(url, options) {
95
- return new Promise((resolve, reject) => {
96
- const urlObj = new URL(url);
97
- const isHttps = urlObj.protocol === 'https:';
98
- const http = isHttps ? https : require('http');
99
-
100
- const requestOptions = {
101
- hostname: urlObj.hostname,
102
- path: urlObj.pathname + urlObj.search,
103
- method: 'GET',
104
- headers: { 'User-Agent': USER_AGENT },
105
- timeout: options.timeout || SEARCH_TIMEOUT
106
- };
107
-
108
- const req = http.get(requestOptions, (res) => {
109
- if (res.statusCode === 301 || res.statusCode === 302) {
110
- const redirectUrl = res.headers.location;
111
- if (redirectUrl) {
112
- this.followRedirect(redirectUrl, options)
113
- .then(resolve)
114
- .catch(reject);
115
- return;
116
- }
117
- }
118
-
119
- let data = '';
120
- res.on('data', (chunk) => { data += chunk; });
121
- res.on('end', () => {
122
- try {
123
- const results = this.parseHTML(data, options.maxResults || MAX_RESULTS);
124
- resolve(results);
125
- } catch (error) {
126
- reject(error);
127
- }
128
- });
129
- });
130
-
131
- req.on('error', reject);
132
- });
133
- }
134
-
135
- /**
136
- * Parse Bing HTML results
137
- */
138
- static parseHTML(html, maxResults) {
139
- const results = [];
140
-
141
- // Bing result patterns
142
- // Look for <li class="b_algo"> or <li class="b_result">
143
- const algoRegex = /<li[^>]*class="b_algo"[^>]*>([\s\S]*?)<\/li>/g;
144
- let match;
145
- let count = 0;
146
-
147
- while ((match = algoRegex.exec(html)) !== null && count < maxResults) {
148
- const block = match[1];
149
- count++;
150
-
151
- // Extract title (from <h2><a> tag)
152
- const titleMatch = block.match(/<h2><a[^>]*>([^<]+)<\/a>/);
153
- let title = titleMatch ? this.decodeHTML(titleMatch[1]) : '';
154
-
155
- // Also try alternative pattern
156
- if (!title) {
157
- const altTitleMatch = block.match(/<a[^>]*h="[^"]*"[^>]*>([^<]*(?:<strong>[^<]*<\/strong>[^<]*)*)<\/a>/);
158
- if (altTitleMatch) {
159
- title = this.decodeHTML(altTitleMatch[1].replace(/<strong>/g, '').replace(/<\/strong>/g, ''));
160
- }
161
- }
162
-
163
- // Extract URL
164
- let url = '';
165
- const urlMatch = block.match(/<a[^>]*href="([^"]+)"/);
166
- if (urlMatch) {
167
- url = urlMatch[1];
168
-
169
- // Decode &amp; entities in URL
170
- url = url.replace(/&amp;/g, '&');
171
-
172
- // Clean up Bing redirect URLs
173
- // Format: https://www.bing.com/ck/a?!&p=...&u=<encoded_url>
174
- if (url.includes('bing.com/ck/a')) {
175
- const uMatch = url.match(/[?&]u=([^&]+)/);
176
- if (uMatch) {
177
- let encodedUrl = uMatch[1];
178
- try {
179
- // The URL is double-encoded, decode twice
180
- let decodedUrl = decodeURIComponent(encodedUrl);
181
- decodedUrl = decodeURIComponent(decodedUrl);
182
-
183
- // Bing sometimes adds 'a1' prefix to the final URL
184
- // Remove it and decode the rest as base64
185
- if (decodedUrl.startsWith('a1')) {
186
- const base64Part = decodedUrl.substring(2);
187
- decodedUrl = Buffer.from(base64Part, 'base64').toString('utf-8');
188
- }
189
-
190
- url = decodedUrl;
191
- } catch (e) {
192
- // If decode fails, try alternative
193
- try {
194
- if (encodedUrl.startsWith('a1')) {
195
- const base64Part = encodedUrl.substring(2);
196
- url = Buffer.from(base64Part, 'base64').toString('utf-8');
197
- } else {
198
- url = decodeURIComponent(encodedUrl);
199
- }
200
- } catch (e2) {}
201
- }
202
- }
203
- }
204
- }
205
-
206
- // Extract snippet (from <p> or <div>)
207
- let snippet = '';
208
- const snippetMatch = block.match(/<p[^>]*>([\s\S]*?)<\/p>/);
209
- if (snippetMatch) {
210
- snippet = this.decodeHTML(snippetMatch[1]
211
- .replace(/<strong>/g, '').replace(/<\/strong>/g, '')
212
- .replace(/<b>/g, '').replace(/<\/b>/g, '')
213
- .replace(/<[^>]+>/g, ' ')
214
- .replace(/\s+/g, ' ')
215
- .trim());
216
- }
217
-
218
- // Skip if no valid URL
219
- if (!url || url.startsWith('#')) continue;
220
-
221
- results.push({
222
- title: title || 'Untitled',
223
- url,
224
- excerpt: snippet || 'No description available.',
225
- source: 'bing'
226
- });
227
- }
228
-
229
- return results;
230
- }
231
-
232
- /**
233
- * Decode HTML entities
234
- */
235
- static decodeHTML(text) {
236
- const entities = {
237
- '&amp;': '&',
238
- '&lt;': '<',
239
- '&gt;': '>',
240
- '&quot;': '"',
241
- '&#39;': "'",
242
- '&apos;': "'",
243
- '&nbsp;': ' ',
244
- '&middot;': '·'
245
- };
246
-
247
- return text.replace(/&[^;]+;/g, (entity) => {
248
- return entities[entity] || entity;
249
- });
250
- }
251
-
252
- /**
253
- * Deduplicate results by URL
254
- */
255
- static dedupeResults(results) {
256
- const seen = new Set();
257
- return results.filter(result => {
258
- const normalizedUrl = result.url
259
- .replace(/^https?:\/\//, '')
260
- .replace(/\/$/, '')
261
- .toLowerCase();
262
-
263
- if (seen.has(normalizedUrl)) return false;
264
- seen.add(normalizedUrl);
265
- return true;
266
- });
267
- }
268
- }
269
-
270
- // ============================================================================
271
- // Exports
272
- // ============================================================================
273
-
274
- module.exports = {
275
- WebSearch,
276
- SEARCH_TIMEOUT,
277
- MAX_RESULTS
278
- };
@@ -1,71 +0,0 @@
1
- {
2
- "name": "smc-skills",
3
- "description": "Sumulige Claude Agent Harness - Curated skill collection for AI coding agents",
4
- "homepage": "https://github.com/sumulige/sumulige-claude",
5
- "owner": {
6
- "name": "sumulige",
7
- "email": "sumulige@example.com"
8
- },
9
- "plugins": [
10
- {
11
- "name": "smc-skills",
12
- "description": "Multi-agent orchestration harness with curated skills. Includes Conductor, Architect, Builder, Reviewer, Librarian agents plus RAG-based skill discovery system.",
13
- "source": "./",
14
- "skills": [
15
- "./../template/.claude/skills/manus-kickoff"
16
- ],
17
- "strict": false,
18
- "skill_list": [
19
- {
20
- "name": "manus-kickoff",
21
- "description": "Manus 风格项目启动流程 - AI 2.0 开发范式",
22
- "path": "./../template/.claude/skills/manus-kickoff",
23
- "category": "tools",
24
- "external": false
25
- }
26
- ]
27
- }
28
- ],
29
- "metadata": {
30
- "version": "1.2.0",
31
- "generated_at": "2026-01-18T05:55:02.439Z",
32
- "skill_count": 1,
33
- "categories": {
34
- "tools": {
35
- "name": "CLI 工具",
36
- "description": "命令行工具和实用程序",
37
- "icon": "🔧"
38
- },
39
- "development": {
40
- "name": "开发辅助",
41
- "description": "语言特定的开发辅助工具",
42
- "icon": "💻"
43
- },
44
- "productivity": {
45
- "name": "效率工具",
46
- "description": "工作流自动化和效率提升",
47
- "icon": "⚡"
48
- },
49
- "automation": {
50
- "name": "自动化",
51
- "description": "浏览器、CI/CD、系统自动化",
52
- "icon": "🤖"
53
- },
54
- "data": {
55
- "name": "数据处理",
56
- "description": "数据库、数据处理和分析",
57
- "icon": "📊"
58
- },
59
- "documentation": {
60
- "name": "文档",
61
- "description": "文档、图表、规范生成",
62
- "icon": "📚"
63
- },
64
- "workflow": {
65
- "name": "工作流编排",
66
- "description": "多代理编排和协调",
67
- "icon": "🎼"
68
- }
69
- }
70
- }
71
- }
@@ -1,74 +0,0 @@
1
- # Sync External Skills
2
- #
3
- # This workflow automatically syncs skills from external repositories
4
- # defined in sources.yaml. It runs daily and can be triggered manually.
5
-
6
- name: Sync External Skills
7
-
8
- on:
9
- # Run daily at midnight UTC
10
- schedule:
11
- - cron: '0 0 * * *'
12
-
13
- # Allow manual trigger
14
- workflow_dispatch:
15
-
16
- # Run on changes to sources.yaml
17
- push:
18
- paths:
19
- - 'sources.yaml'
20
- - '.github/workflows/sync-skills.yml'
21
- branches:
22
- - main
23
-
24
- jobs:
25
- sync:
26
- name: Sync Skills
27
- runs-on: ubuntu-latest
28
-
29
- permissions:
30
- contents: write
31
-
32
- steps:
33
- - name: Checkout repository
34
- uses: actions/checkout@v4
35
-
36
- - name: Setup Node.js
37
- uses: actions/setup-node@v4
38
- with:
39
- node-version: '20'
40
- cache: 'npm'
41
-
42
- - name: Install dependencies
43
- run: npm ci
44
-
45
- - name: Sync external skills
46
- run: npm run sync
47
-
48
- - name: Update marketplace registry
49
- run: npm run update-registry
50
-
51
- - name: Check for changes
52
- id: git-check
53
- run: |
54
- git diff --quiet || echo "changed=true" >> $GITHUB_OUTPUT
55
-
56
- - name: Commit changes
57
- if: steps.git-check.outputs.changed == 'true'
58
- run: |
59
- git config --local user.email "github-actions[bot]@users.noreply.github.com"
60
- git config --local user.name "github-actions[bot]"
61
- git add -A
62
- git commit -m "chore: sync external skills [skip ci]"
63
- git push
64
-
65
- - name: Summary
66
- if: always()
67
- run: |
68
- echo "## Sync Summary" >> $GITHUB_STEP_SUMMARY
69
- echo "" >> $GITHUB_STEP_SUMMARY
70
- if [ "${{ steps.git-check.outputs.changed }}" == "true" ]; then
71
- echo "✅ Skills were synced and changes committed" >> $GITHUB_STEP_SUMMARY
72
- else
73
- echo "ℹ️ No changes detected - skills are up to date" >> $GITHUB_STEP_SUMMARY
74
- fi