@skillkit/tui
Advanced tools
+61
-10
| import * as react_jsx_runtime from 'react/jsx-runtime'; | ||
| import * as react from 'react'; | ||
| import { ScoredSkill, ProjectProfile } from '@skillkit/core'; | ||
| import { ScoredSkill, ProjectProfile, Learning, Observation, MemoryStatus } from '@skillkit/core'; | ||
| type Screen = 'home' | 'browse' | 'installed' | 'sync' | 'settings' | 'recommend' | 'translate' | 'context'; | ||
| type Screen = 'home' | 'browse' | 'installed' | 'sync' | 'settings' | 'recommend' | 'translate' | 'context' | 'workflow' | 'execute' | 'history' | 'marketplace' | 'memory'; | ||
| declare function App(): react_jsx_runtime.JSX.Element; | ||
@@ -64,2 +64,32 @@ | ||
| interface Props$b { | ||
| cols?: number; | ||
| rows?: number; | ||
| } | ||
| declare function Browse({ rows }: Props$b): react_jsx_runtime.JSX.Element; | ||
| interface Props$a { | ||
| cols?: number; | ||
| rows?: number; | ||
| } | ||
| declare function Installed({ rows }: Props$a): react_jsx_runtime.JSX.Element; | ||
| interface Props$9 { | ||
| cols?: number; | ||
| rows?: number; | ||
| } | ||
| declare function Sync({ rows }: Props$9): react_jsx_runtime.JSX.Element; | ||
| interface Props$8 { | ||
| cols?: number; | ||
| rows?: number; | ||
| } | ||
| declare function Settings({}: Props$8): react_jsx_runtime.JSX.Element; | ||
| interface Props$7 { | ||
| cols?: number; | ||
| rows?: number; | ||
| } | ||
| declare function Recommend({ rows }: Props$7): react_jsx_runtime.JSX.Element; | ||
| interface Props$6 { | ||
@@ -69,3 +99,3 @@ cols?: number; | ||
| } | ||
| declare function Browse({ rows }: Props$6): react_jsx_runtime.JSX.Element; | ||
| declare function Translate({ rows }: Props$6): react_jsx_runtime.JSX.Element; | ||
@@ -76,3 +106,3 @@ interface Props$5 { | ||
| } | ||
| declare function Installed({ rows }: Props$5): react_jsx_runtime.JSX.Element; | ||
| declare function Context({ rows }: Props$5): react_jsx_runtime.JSX.Element; | ||
@@ -83,3 +113,3 @@ interface Props$4 { | ||
| } | ||
| declare function Sync({ rows }: Props$4): react_jsx_runtime.JSX.Element; | ||
| declare function Memory({ rows }: Props$4): react_jsx_runtime.JSX.Element; | ||
@@ -90,3 +120,3 @@ interface Props$3 { | ||
| } | ||
| declare function Settings({}: Props$3): react_jsx_runtime.JSX.Element; | ||
| declare function Workflow({ rows }: Props$3): react_jsx_runtime.JSX.Element; | ||
@@ -97,3 +127,3 @@ interface Props$2 { | ||
| } | ||
| declare function Recommend({ rows }: Props$2): react_jsx_runtime.JSX.Element; | ||
| declare function Execute({ rows }: Props$2): react_jsx_runtime.JSX.Element; | ||
@@ -104,3 +134,3 @@ interface Props$1 { | ||
| } | ||
| declare function Translate({ rows }: Props$1): react_jsx_runtime.JSX.Element; | ||
| declare function History({ rows }: Props$1): react_jsx_runtime.JSX.Element; | ||
@@ -111,3 +141,3 @@ interface Props { | ||
| } | ||
| declare function Context({ rows }: Props): react_jsx_runtime.JSX.Element; | ||
| declare function Marketplace({ rows }: Props): react_jsx_runtime.JSX.Element; | ||
@@ -174,2 +204,17 @@ interface UseSkillsResult { | ||
| interface UseMemoryResult { | ||
| learnings: Learning[]; | ||
| observations: Observation[]; | ||
| status: MemoryStatus | null; | ||
| loading: boolean; | ||
| error: string | null; | ||
| isGlobal: boolean; | ||
| setIsGlobal: (isGlobal: boolean) => void; | ||
| refresh: () => void; | ||
| search: (query: string) => Learning[]; | ||
| deleteLearning: (id: string) => boolean; | ||
| deleteObservation: (id: string) => boolean; | ||
| } | ||
| declare function useMemory(): UseMemoryResult; | ||
| declare const colors: { | ||
@@ -193,2 +238,8 @@ primary: string; | ||
| spinner: string[]; | ||
| arrowUp: string; | ||
| arrowDown: string; | ||
| success: string; | ||
| error: string; | ||
| warning: string; | ||
| info: string; | ||
| }; | ||
@@ -199,2 +250,2 @@ 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"; | ||
| 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 }; | ||
| 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 }; |
+3
-3
| { | ||
| "name": "@skillkit/tui", | ||
| "version": "1.3.1", | ||
| "version": "1.4.0", | ||
| "description": "Terminal UI for SkillKit", | ||
@@ -24,4 +24,4 @@ "type": "module", | ||
| "react": "^18.3.1", | ||
| "@skillkit/core": "1.3.1", | ||
| "@skillkit/agents": "1.3.1" | ||
| "@skillkit/agents": "1.4.0", | ||
| "@skillkit/core": "1.4.0" | ||
| }, | ||
@@ -28,0 +28,0 @@ "devDependencies": { |
+127
-27
| # @skillkit/tui | ||
| Interactive terminal UI for SkillKit - browse, install, and manage skills visually. | ||
| [](https://www.npmjs.com/package/@skillkit/tui) | ||
| [](https://opensource.org/licenses/Apache-2.0) | ||
| **Interactive terminal UI for SkillKit** - browse, install, translate, and manage skills visually in your terminal. | ||
| ## Installation | ||
@@ -9,38 +12,75 @@ | ||
| npm install @skillkit/tui | ||
| # or | ||
| npm install -g skillkit # includes TUI | ||
| ``` | ||
| ## Quick Start | ||
| ```bash | ||
| skillkit ui | ||
| # or just | ||
| skillkit | ||
| ``` | ||
| ## Features | ||
| - **Browse Skills**: Discover skills from the marketplace | ||
| - **Smart Recommendations**: Project-aware skill suggestions | ||
| - **Skill Translation**: Convert between agent formats | ||
| - **Context Management**: View and sync project context | ||
| - **Keyboard Navigation**: Fast, intuitive controls | ||
| - **Browse Skills**: Explore 33+ skill repositories with search and filtering | ||
| - **Smart Recommendations**: See project-aware skill suggestions with match scores | ||
| - **Cross-Agent Translation**: Convert skills between any of 17 agent formats | ||
| - **Context Management**: View detected stack and sync to all agents | ||
| - **Multi-Agent Install**: Install skills to multiple agents at once | ||
| - **Responsive Design**: Adapts to any terminal size | ||
| ## Usage | ||
| ## Screens | ||
| ```typescript | ||
| import { startTUI } from '@skillkit/tui'; | ||
| ### Home | ||
| Overview of your project and quick actions. Shows detected agents, installed skills count, and navigation hints. | ||
| // Launch the interactive TUI | ||
| await startTUI(); | ||
| ``` | ||
| ### Browse (b) | ||
| Explore available skills from curated repositories. Features: | ||
| - Search skills with `/` | ||
| - Filter by tags | ||
| - View skill details | ||
| - One-key installation | ||
| Or via CLI: | ||
| ### Recommend (r) | ||
| AI-powered skill suggestions based on your project: | ||
| - Analyzes your package.json, configs, and file structure | ||
| - Shows match percentage for each skill | ||
| - Explains why skills are recommended | ||
| - Filter by minimum score | ||
| ```bash | ||
| skillkit ui | ||
| ``` | ||
| ### Translate (t) | ||
| Convert skills between agent formats: | ||
| - Select source skill | ||
| - Choose target agent(s) | ||
| - Preview translation | ||
| - Apply with confirmation | ||
| ## Screens | ||
| ### Context (c) | ||
| View and manage project context: | ||
| - Detected languages and frameworks | ||
| - Found testing tools and databases | ||
| - Installed agents | ||
| - Sync context to all agents | ||
| - **Home**: Overview and quick actions | ||
| - **Browse**: Explore available skills | ||
| - **Recommend**: Get personalized recommendations | ||
| - **Translate**: Convert skills between formats | ||
| - **Context**: Manage project context | ||
| - **Installed**: View and manage installed skills | ||
| - **Sync**: Sync skills across agents | ||
| - **Settings**: Configure skillkit | ||
| ### Installed (l) | ||
| Manage your installed skills: | ||
| - View all installed skills | ||
| - Enable/disable skills | ||
| - Remove skills | ||
| - Update from source | ||
| ### Sync (s) | ||
| Sync skills across agents: | ||
| - Select target agents | ||
| - Preview changes | ||
| - Apply sync | ||
| ### Settings (,) | ||
| Configure SkillKit: | ||
| - Default agent | ||
| - Auto-sync settings | ||
| - Skill directories | ||
| ## Keyboard Shortcuts | ||
@@ -50,8 +90,68 @@ | ||
| |-----|--------| | ||
| | `↑/↓` | Navigate | | ||
| | `Enter` | Select | | ||
| | `h` | Home screen | | ||
| | `b` | Browse skills | | ||
| | `r` | Recommendations | | ||
| | `t` | Translate skills | | ||
| | `c` | Context management | | ||
| | `l` | List installed | | ||
| | `s` | Sync skills | | ||
| | `,` | Settings | | ||
| | `↑/↓` | Navigate lists | | ||
| | `Enter` | Select / Confirm | | ||
| | `/` | Search | | ||
| | `m` | Multi-select mode | | ||
| | `Tab` | Switch focus | | ||
| | `Esc` | Go back | | ||
| | `?` | Help | | ||
| | `q` | Quit | | ||
| ## Programmatic Usage | ||
| ```typescript | ||
| import { startTUI, TUIOptions } from '@skillkit/tui'; | ||
| // Launch with defaults | ||
| await startTUI(); | ||
| // Launch with options | ||
| await startTUI({ | ||
| projectPath: './my-project', | ||
| initialScreen: 'browse', | ||
| theme: 'dark', | ||
| }); | ||
| ``` | ||
| ## Architecture | ||
| Built with: | ||
| - **Ink** - React for CLIs | ||
| - **React** - Component architecture | ||
| - **@skillkit/core** - Core functionality | ||
| ``` | ||
| src/ | ||
| ├── app.tsx # Main app component | ||
| ├── screens/ # Screen components | ||
| │ ├── Home.tsx | ||
| │ ├── Browse.tsx | ||
| │ ├── Recommend.tsx | ||
| │ ├── Translate.tsx | ||
| │ ├── Context.tsx | ||
| │ └── ... | ||
| ├── components/ # Reusable UI components | ||
| │ ├── SkillCard.tsx | ||
| │ ├── AgentSelector.tsx | ||
| │ └── ... | ||
| └── hooks/ # React hooks | ||
| ├── useSkills.ts | ||
| ├── useContext.ts | ||
| └── ... | ||
| ``` | ||
| ## Terminal Requirements | ||
| - Minimum: 80x24 characters | ||
| - Recommended: 120x40 characters | ||
| - Supports: True Color, 256 colors, basic ANSI | ||
| ## Documentation | ||
@@ -58,0 +158,0 @@ |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
322171
35.46%3036
33.74%162
161.29%8
-27.27%6
20%+ Added
+ Added
- Removed
- Removed
Updated
Updated