@miphamai/cli 0.5.11 → 0.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.
@@ -30,6 +30,8 @@ export interface SkillEntry {
30
30
  category: string
31
31
  /** Author */
32
32
  author: string
33
+ /** If true, skill is already built-in — no download needed */
34
+ builtin?: boolean
33
35
  }
34
36
 
35
37
  /**
@@ -39,11 +41,13 @@ export interface SkillEntry {
39
41
  const COMMUNITY_SKILLS: SkillEntry[] = [
40
42
  {
41
43
  name: 'code-review',
42
- description: 'Automated code review with multiple dimensions',
44
+ description:
45
+ 'Automated code review with multiple dimensions — complexity, security, performance, quality',
43
46
  url: 'https://github.com/One-Mipham/skill-code-review',
44
47
  file: 'code-review.SKILL.md',
45
48
  category: 'Development',
46
49
  author: 'MiphamAI',
50
+ builtin: true,
47
51
  },
48
52
  {
49
53
  name: 'systematic-debugging',
@@ -60,42 +64,49 @@ const COMMUNITY_SKILLS: SkillEntry[] = [
60
64
  file: 'test-driven-development.SKILL.md',
61
65
  category: 'Development',
62
66
  author: 'Anthropic',
67
+ builtin: true,
63
68
  },
64
69
  {
65
70
  name: 'web-access',
66
- description: 'Web search, scraping, and browser automation',
71
+ description:
72
+ 'Web search, scraping, and browser automation — search engines, page fetching, authenticated sites',
67
73
  url: 'https://github.com/One-Mipham/skill-web-access',
68
74
  file: 'web-access.SKILL.md',
69
75
  category: 'Network',
70
76
  author: 'MiphamAI',
77
+ builtin: true,
71
78
  },
72
79
  {
73
80
  name: 'doc-generator',
74
- description: 'Generate API docs, READMEs, and changelogs',
81
+ description: 'Generate API docs, READMEs, and changelogs from code analysis',
75
82
  url: 'https://github.com/One-Mipham/skill-doc-generator',
76
83
  file: 'doc-generator.SKILL.md',
77
84
  category: 'Documentation',
78
85
  author: 'MiphamAI',
86
+ builtin: true,
79
87
  },
80
88
  {
81
89
  name: 'github-ops',
82
- description: 'GitHub PR/issue management and automation',
90
+ description: 'GitHub PR/issue management and automation — labels, milestones, reviews',
83
91
  url: 'https://github.com/One-Mipham/skill-github-ops',
84
92
  file: 'github-ops.SKILL.md',
85
93
  category: 'DevOps',
86
94
  author: 'MiphamAI',
95
+ builtin: true,
87
96
  },
88
97
  {
89
98
  name: 'security-review',
90
- description: 'Security audit and vulnerability scanning for code changes',
99
+ description:
100
+ 'Security audit and vulnerability scanning for code changes — OWASP, secrets, supply chain',
91
101
  url: 'https://github.com/One-Mipham/skill-security-review',
92
102
  file: 'security-review.SKILL.md',
93
103
  category: 'Security',
94
104
  author: 'MiphamAI',
105
+ builtin: true,
95
106
  },
96
107
  {
97
108
  name: 'frontend-design',
98
- description: 'Distinctive visual design guidance for UI components',
109
+ description: 'Distinctive visual design guidance for UI components — typography, color, layout',
99
110
  url: 'https://github.com/anthropics/skills',
100
111
  file: 'frontend-design.SKILL.md',
101
112
  category: 'Design',
@@ -146,6 +157,15 @@ export function installSkill(skillName: string): InstallResult {
146
157
  }
147
158
  }
148
159
 
160
+ // Built-in skills are already available — no download needed
161
+ if (entry.builtin) {
162
+ return {
163
+ success: true,
164
+ name: skillName,
165
+ message: `Skill "${skillName}" is already built-in and ready to use. No installation needed.`,
166
+ }
167
+ }
168
+
149
169
  const destDir = join(SKILLS_DIR)
150
170
  const destPath = join(destDir, `${skillName}.SKILL.md`)
151
171
 
package/src/ui/app.tsx CHANGED
@@ -3,6 +3,7 @@ import { Box, Text, useInput } from 'ink'
3
3
  import type { QueryEngine } from '../core/engine'
4
4
  import type { MiphamConfig } from '../shared/index.ts'
5
5
  import type { SkillsLoader } from '../skills/loader'
6
+ import type { PluginManager } from '../plugin/plugin-manager'
6
7
  import { AgentRegistry } from '../agent/agent-registry'
7
8
  import { ChatPanel } from './chat'
8
9
  import { InputBar } from './input'
@@ -22,6 +23,8 @@ interface AppProps {
22
23
  initialModel?: string
23
24
  lang?: string
24
25
  skillsLoader?: SkillsLoader
26
+ pluginManager?: PluginManager
27
+ version?: string
25
28
  }
26
29
 
27
30
  export interface ToolMeta {
@@ -43,9 +46,8 @@ interface AgentProgress {
43
46
  startTime: number
44
47
  }
45
48
 
46
- import { PACKAGE_VERSION } from '../shared/index.ts'
47
-
48
- const VERSION = PACKAGE_VERSION
49
+ // Version is read fresh from package.json at startup via runApp prop
50
+ // (bypasses Bun module caching after npm update)
49
51
 
50
52
  type PermissionMode = 'auto' | 'ask' | 'bypass'
51
53
 
@@ -63,6 +65,8 @@ export function App({
63
65
  initialModel,
64
66
  lang: _lang,
65
67
  skillsLoader,
68
+ pluginManager,
69
+ version,
66
70
  }: AppProps) {
67
71
  const [messages, setMessages] = useState<ChatMessage[]>([])
68
72
  const [isLoading, setIsLoading] = useState(false)
@@ -105,15 +109,16 @@ export function App({
105
109
  config,
106
110
  providerId,
107
111
  modelId,
108
- version: VERSION,
112
+ version: version || '0.0.0',
109
113
  setSessionTitle: (title: string) => setSessionTitle(title),
110
114
  setFastMode: (on: boolean) => setFastMode(on),
111
115
  setEffort: (level: string) => setEffort(level),
112
116
  setFocusMode: (on: boolean) => setFocusMode(on),
113
117
  setGoal: (text: string) => setGoalText(text),
114
118
  skillsLoader,
119
+ pluginManager,
115
120
  }),
116
- [engine, config, providerId, modelId, skillsLoader],
121
+ [engine, config, providerId, modelId, skillsLoader, pluginManager],
117
122
  )
118
123
 
119
124
  const handleSubmit = useCallback(
@@ -356,7 +361,7 @@ export function App({
356
361
  <Text color="#FFD700" bold>
357
362
  Mipham Code
358
363
  </Text>
359
- <Text dimColor>v{VERSION}</Text>
364
+ <Text dimColor>v{version || '0.0.0'}</Text>
360
365
  <Text dimColor>{modelId}</Text>
361
366
  </Box>
362
367