@skillkit/tui 1.3.0 → 1.4.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.
package/README.md ADDED
@@ -0,0 +1,161 @@
1
+ # @skillkit/tui
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@skillkit/tui.svg)](https://www.npmjs.com/package/@skillkit/tui)
4
+ [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
5
+
6
+ **Interactive terminal UI for SkillKit** - browse, install, translate, and manage skills visually in your terminal.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ npm install @skillkit/tui
12
+ # or
13
+ npm install -g skillkit # includes TUI
14
+ ```
15
+
16
+ ## Quick Start
17
+
18
+ ```bash
19
+ skillkit ui
20
+ # or just
21
+ skillkit
22
+ ```
23
+
24
+ ## Features
25
+
26
+ - **Browse Skills**: Explore 33+ skill repositories with search and filtering
27
+ - **Smart Recommendations**: See project-aware skill suggestions with match scores
28
+ - **Cross-Agent Translation**: Convert skills between any of 17 agent formats
29
+ - **Context Management**: View detected stack and sync to all agents
30
+ - **Multi-Agent Install**: Install skills to multiple agents at once
31
+ - **Responsive Design**: Adapts to any terminal size
32
+
33
+ ## Screens
34
+
35
+ ### Home
36
+ Overview of your project and quick actions. Shows detected agents, installed skills count, and navigation hints.
37
+
38
+ ### Browse (b)
39
+ Explore available skills from curated repositories. Features:
40
+ - Search skills with `/`
41
+ - Filter by tags
42
+ - View skill details
43
+ - One-key installation
44
+
45
+ ### Recommend (r)
46
+ AI-powered skill suggestions based on your project:
47
+ - Analyzes your package.json, configs, and file structure
48
+ - Shows match percentage for each skill
49
+ - Explains why skills are recommended
50
+ - Filter by minimum score
51
+
52
+ ### Translate (t)
53
+ Convert skills between agent formats:
54
+ - Select source skill
55
+ - Choose target agent(s)
56
+ - Preview translation
57
+ - Apply with confirmation
58
+
59
+ ### Context (c)
60
+ View and manage project context:
61
+ - Detected languages and frameworks
62
+ - Found testing tools and databases
63
+ - Installed agents
64
+ - Sync context to all agents
65
+
66
+ ### Installed (l)
67
+ Manage your installed skills:
68
+ - View all installed skills
69
+ - Enable/disable skills
70
+ - Remove skills
71
+ - Update from source
72
+
73
+ ### Sync (s)
74
+ Sync skills across agents:
75
+ - Select target agents
76
+ - Preview changes
77
+ - Apply sync
78
+
79
+ ### Settings (,)
80
+ Configure SkillKit:
81
+ - Default agent
82
+ - Auto-sync settings
83
+ - Skill directories
84
+
85
+ ## Keyboard Shortcuts
86
+
87
+ | Key | Action |
88
+ |-----|--------|
89
+ | `h` | Home screen |
90
+ | `b` | Browse skills |
91
+ | `r` | Recommendations |
92
+ | `t` | Translate skills |
93
+ | `c` | Context management |
94
+ | `l` | List installed |
95
+ | `s` | Sync skills |
96
+ | `,` | Settings |
97
+ | `↑/↓` | Navigate lists |
98
+ | `Enter` | Select / Confirm |
99
+ | `/` | Search |
100
+ | `m` | Multi-select mode |
101
+ | `Tab` | Switch focus |
102
+ | `Esc` | Go back |
103
+ | `?` | Help |
104
+ | `q` | Quit |
105
+
106
+ ## Programmatic Usage
107
+
108
+ ```typescript
109
+ import { startTUI, TUIOptions } from '@skillkit/tui';
110
+
111
+ // Launch with defaults
112
+ await startTUI();
113
+
114
+ // Launch with options
115
+ await startTUI({
116
+ projectPath: './my-project',
117
+ initialScreen: 'browse',
118
+ theme: 'dark',
119
+ });
120
+ ```
121
+
122
+ ## Architecture
123
+
124
+ Built with:
125
+ - **Ink** - React for CLIs
126
+ - **React** - Component architecture
127
+ - **@skillkit/core** - Core functionality
128
+
129
+ ```
130
+ src/
131
+ ├── app.tsx # Main app component
132
+ ├── screens/ # Screen components
133
+ │ ├── Home.tsx
134
+ │ ├── Browse.tsx
135
+ │ ├── Recommend.tsx
136
+ │ ├── Translate.tsx
137
+ │ ├── Context.tsx
138
+ │ └── ...
139
+ ├── components/ # Reusable UI components
140
+ │ ├── SkillCard.tsx
141
+ │ ├── AgentSelector.tsx
142
+ │ └── ...
143
+ └── hooks/ # React hooks
144
+ ├── useSkills.ts
145
+ ├── useContext.ts
146
+ └── ...
147
+ ```
148
+
149
+ ## Terminal Requirements
150
+
151
+ - Minimum: 80x24 characters
152
+ - Recommended: 120x40 characters
153
+ - Supports: True Color, 256 colors, basic ANSI
154
+
155
+ ## Documentation
156
+
157
+ Full documentation: https://github.com/rohitg00/skillkit
158
+
159
+ ## License
160
+
161
+ Apache-2.0
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { ScoredSkill, ProjectProfile } from '@skillkit/core';
3
+ import { ScoredSkill, ProjectProfile, Learning, Observation, MemoryStatus } from '@skillkit/core';
4
4
 
5
- type Screen = 'home' | 'browse' | 'installed' | 'sync' | 'settings' | 'recommend' | 'translate' | 'context';
5
+ type Screen = 'home' | 'browse' | 'installed' | 'sync' | 'settings' | 'recommend' | 'translate' | 'context' | 'workflow' | 'execute' | 'history' | 'marketplace' | 'memory';
6
6
  declare function App(): react_jsx_runtime.JSX.Element;
7
7
 
8
8
  interface SidebarProps {
@@ -61,47 +61,77 @@ interface HomeProps {
61
61
  }
62
62
  declare function Home({ cols, rows }: HomeProps): react_jsx_runtime.JSX.Element;
63
63
 
64
+ interface Props$b {
65
+ cols?: number;
66
+ rows?: number;
67
+ }
68
+ declare function Browse({ rows }: Props$b): react_jsx_runtime.JSX.Element;
69
+
70
+ interface Props$a {
71
+ cols?: number;
72
+ rows?: number;
73
+ }
74
+ declare function Installed({ rows }: Props$a): react_jsx_runtime.JSX.Element;
75
+
76
+ interface Props$9 {
77
+ cols?: number;
78
+ rows?: number;
79
+ }
80
+ declare function Sync({ rows }: Props$9): react_jsx_runtime.JSX.Element;
81
+
82
+ interface Props$8 {
83
+ cols?: number;
84
+ rows?: number;
85
+ }
86
+ declare function Settings({}: Props$8): react_jsx_runtime.JSX.Element;
87
+
88
+ interface Props$7 {
89
+ cols?: number;
90
+ rows?: number;
91
+ }
92
+ declare function Recommend({ rows }: Props$7): react_jsx_runtime.JSX.Element;
93
+
64
94
  interface Props$6 {
65
95
  cols?: number;
66
96
  rows?: number;
67
97
  }
68
- declare function Browse({ rows }: Props$6): react_jsx_runtime.JSX.Element;
98
+ declare function Translate({ rows }: Props$6): react_jsx_runtime.JSX.Element;
69
99
 
70
100
  interface Props$5 {
71
101
  cols?: number;
72
102
  rows?: number;
73
103
  }
74
- declare function Installed({ rows }: Props$5): react_jsx_runtime.JSX.Element;
104
+ declare function Context({ rows }: Props$5): react_jsx_runtime.JSX.Element;
75
105
 
76
106
  interface Props$4 {
77
107
  cols?: number;
78
108
  rows?: number;
79
109
  }
80
- declare function Sync({ rows }: Props$4): react_jsx_runtime.JSX.Element;
110
+ declare function Memory({ rows }: Props$4): react_jsx_runtime.JSX.Element;
81
111
 
82
112
  interface Props$3 {
83
113
  cols?: number;
84
114
  rows?: number;
85
115
  }
86
- declare function Settings({}: Props$3): react_jsx_runtime.JSX.Element;
116
+ declare function Workflow({ rows }: Props$3): react_jsx_runtime.JSX.Element;
87
117
 
88
118
  interface Props$2 {
89
119
  cols?: number;
90
120
  rows?: number;
91
121
  }
92
- declare function Recommend({ rows }: Props$2): react_jsx_runtime.JSX.Element;
122
+ declare function Execute({ rows }: Props$2): react_jsx_runtime.JSX.Element;
93
123
 
94
124
  interface Props$1 {
95
125
  cols?: number;
96
126
  rows?: number;
97
127
  }
98
- declare function Translate({ rows }: Props$1): react_jsx_runtime.JSX.Element;
128
+ declare function History({ rows }: Props$1): react_jsx_runtime.JSX.Element;
99
129
 
100
130
  interface Props {
101
131
  cols?: number;
102
132
  rows?: number;
103
133
  }
104
- declare function Context({ rows }: Props): react_jsx_runtime.JSX.Element;
134
+ declare function Marketplace({ rows }: Props): react_jsx_runtime.JSX.Element;
105
135
 
106
136
  interface UseSkillsResult {
107
137
  skills: SkillItem[];
@@ -163,6 +193,21 @@ interface UseRecommendResult {
163
193
  }
164
194
  declare function useRecommend(projectPath?: string): UseRecommendResult;
165
195
 
196
+ interface UseMemoryResult {
197
+ learnings: Learning[];
198
+ observations: Observation[];
199
+ status: MemoryStatus | null;
200
+ loading: boolean;
201
+ error: string | null;
202
+ isGlobal: boolean;
203
+ setIsGlobal: (isGlobal: boolean) => void;
204
+ refresh: () => void;
205
+ search: (query: string) => Learning[];
206
+ deleteLearning: (id: string) => boolean;
207
+ deleteObservation: (id: string) => boolean;
208
+ }
209
+ declare function useMemory(): UseMemoryResult;
210
+
166
211
  declare const colors: {
167
212
  primary: string;
168
213
  secondary: string;
@@ -181,9 +226,15 @@ declare const symbols: {
181
226
  check: string;
182
227
  star: string;
183
228
  spinner: string[];
229
+ arrowUp: string;
230
+ arrowDown: string;
231
+ success: string;
232
+ error: string;
233
+ warning: string;
234
+ info: string;
184
235
  };
185
236
  declare const logo = "\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u255D\u2588\u2588\u2551\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551\n\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\n\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\n";
186
237
 
187
238
  declare function startTUI(): Promise<void>;
188
239
 
189
- export { App, Browse, Context, Header, Home, Installed, Recommend, type Screen, SearchInput, Settings, Sidebar, type SkillItem, SkillList, StatusBar, Sync, Translate, colors, logo, startTUI, symbols, useKeyboard, useListNavigation, useMarketplace, useRecommend, useSkills };
240
+ export { App, Browse, Context, Execute, Header, History, Home, Installed, Marketplace, Memory, Recommend, type Screen, SearchInput, Settings, Sidebar, type SkillItem, SkillList, StatusBar, Sync, Translate, Workflow, colors, logo, startTUI, symbols, useKeyboard, useListNavigation, useMarketplace, useMemory, useRecommend, useSkills };