when-bridging-web-cli-use-web-cli-teleport
关于
This skill enables bidirectional integration between web interfaces and CLI tools, allowing web apps to trigger CLI commands and CLI tools to display web interfaces. It provides REST APIs and WebSocket communication for real-time data exchange between systems. Use this when you need to bridge web-based workflows with existing CLI tools or command-line operations.
技能文档
Web-CLI Teleport SOP
Overview
Bridge web interfaces with CLI workflows for seamless integration, enabling web applications to trigger CLI commands and CLI tools to display web interfaces.
Agents & Responsibilities
backend-dev
Role: Implement bridge API and integration logic Responsibilities:
- Build REST API for CLI integration
- Implement WebSocket for real-time communication
- Handle authentication and security
- Manage state synchronization
system-architect
Role: Design bridge architecture and patterns Responsibilities:
- Design integration architecture
- Define communication protocols
- Plan security model
- Ensure scalability
Phase 1: Design Bridge Architecture
Objective
Design architecture for bidirectional web-CLI communication.
Scripts
# Generate architecture diagram
npx claude-flow@alpha architect design \
--type "web-cli-bridge" \
--output bridge-architecture.json
# Define API specification
cat > api-spec.yaml <<EOF
openapi: 3.0.0
info:
title: Web-CLI Bridge API
version: 1.0.0
paths:
/cli/execute:
post:
summary: Execute CLI command from web
requestBody:
content:
application/json:
schema:
type: object
properties:
command: { type: string }
args: { type: array }
responses:
'200':
description: Command output
/web/render:
post:
summary: Render web UI from CLI
requestBody:
content:
application/json:
schema:
type: object
properties:
component: { type: string }
data: { type: object }
EOF
# Store architecture
npx claude-flow@alpha memory store \
--key "bridge/architecture" \
--file bridge-architecture.json
Architecture Patterns
Web → CLI:
Web UI → REST API → CLI Executor → Command → Output → API → Web UI
CLI → Web:
CLI Tool → WebSocket → Web Server → Browser → UI Render
Bidirectional:
Web UI ←→ WebSocket ←→ Bridge Server ←→ CLI Tools
Phase 2: Implement Web Interface
Objective
Build web interface that can trigger and monitor CLI commands.
Scripts
# Create web application
npx create-react-app web-cli-bridge
cd web-cli-bridge
# Install dependencies
npm install axios socket.io-client
# Generate web components
npx claude-flow@alpha generate component \
--name "CLIExecutor" \
--type "react" \
--output src/components/CLIExecutor.jsx
# Build web interface
npm run build
# Deploy web app
npx claude-flow@alpha deploy web \
--source ./build \
--target ./deploy/web
Web Component Example
// src/components/CLIExecutor.jsx
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import io from 'socket.io-client';
function CLIExecutor() {
const [command, setCommand] = useState('');
const [output, setOutput] = useState('');
const [socket, setSocket] = useState(null);
useEffect(() => {
const newSocket = io('http://localhost:3001');
setSocket(newSocket);
newSocket.on('cli-output', (data) => {
setOutput(prev => prev + data + '\n');
});
return () => newSocket.close();
}, []);
const executeCommand = async () => {
try {
const response = await axios.post('/api/cli/execute', {
command,
args: command.split(' ').slice(1)
});
setOutput(response.data.output);
} catch (error) {
setOutput(`Error: ${error.message}`);
}
};
return (
<div className="cli-executor">
<input
type="text"
value={command}
onChange={(e) => setCommand(e.target.value)}
placeholder="Enter CLI command..."
/>
<button onClick={executeCommand}>Execute</button>
<pre className="output">{output}</pre>
</div>
);
}
export default CLIExecutor;
Phase 3: Implement CLI Bridge
Objective
Build CLI-side bridge that connects to web interface.
Scripts
# Create bridge server
mkdir cli-bridge
cd cli-bridge
npm init -y
npm install express socket.io cors child_process
# Generate bridge server
npx claude-flow@alpha generate server \
--type "bridge" \
--output server.js
# Start bridge server
node server.js &
# Test connection
curl -X POST http://localhost:3001/api/cli/execute \
-H "Content-Type: application/json" \
-d '{"command": "ls", "args": ["-la"]}'
Bridge Server Implementation
// server.js
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const { exec } = require('child_process');
const cors = require('cors');
const app = express();
const server = http.createServer(app);
const io = socketIo(server, { cors: { origin: '*' } });
app.use(cors());
app.use(express.json());
// Execute CLI command from web
app.post('/api/cli/execute', (req, res) => {
const { command, args = [] } = req.body;
const fullCommand = `${command} ${args.join(' ')}`;
exec(fullCommand, (error, stdout, stderr) => {
if (error) {
return res.status(500).json({
error: error.message,
stderr
});
}
res.json({
output: stdout,
stderr
});
// Broadcast to all connected clients
io.emit('cli-output', stdout);
});
});
// Render web UI from CLI
app.post('/api/web/render', (req, res) => {
const { component, data } = req.body;
io.emit('render-component', {
component,
data
});
res.json({ success: true });
});
// WebSocket connection
io.on('connection', (socket) => {
console.log('Client connected');
socket.on('disconnect', () => {
console.log('Client disconnected');
});
});
server.listen(3001, () => {
console.log('Bridge server running on port 3001');
});
CLI Tool Integration
#!/bin/bash
# cli-tool-with-web.sh
# Function to render web UI from CLI
render_web_ui() {
local component=$1
local data=$2
curl -X POST http://localhost:3001/api/web/render \
-H "Content-Type: application/json" \
-d "{\"component\": \"$component\", \"data\": $data}"
}
# Example: Show analysis results in web UI
analyze_code() {
local path=$1
local results=$(npx claude-flow@alpha analyze "$path" --format json)
# Send results to web interface
render_web_ui "AnalysisResults" "$results"
echo "Results sent to web interface"
}
analyze_code ./src
Phase 4: Test Integration
Objective
Validate bidirectional communication and error handling.
Scripts
# Test web → CLI
curl -X POST http://localhost:3001/api/cli/execute \
-H "Content-Type: application/json" \
-d '{"command": "npx", "args": ["claude-flow@alpha", "swarm", "status"]}'
# Test CLI → web
bash cli-tool-with-web.sh
# Test WebSocket connection
node test-websocket.js
# Run integration tests
npm test -- --testPathPattern=integration
# Load testing
npx artillery quick --count 10 -n 20 http://localhost:3001/api/cli/execute
Integration Tests
// tests/integration.test.js
const request = require('supertest');
const io = require('socket.io-client');
const app = require('../server');
describe('Web-CLI Bridge Integration', () => {
let socket;
beforeAll((done) => {
socket = io('http://localhost:3001');
socket.on('connect', done);
});
afterAll(() => {
socket.close();
});
it('should execute CLI command from web', async () => {
const response = await request(app)
.post('/api/cli/execute')
.send({ command: 'echo', args: ['test'] });
expect(response.status).toBe(200);
expect(response.body.output).toContain('test');
});
it('should broadcast CLI output via WebSocket', (done) => {
socket.on('cli-output', (data) => {
expect(data).toBeDefined();
done();
});
request(app)
.post('/api/cli/execute')
.send({ command: 'echo', args: ['websocket test'] });
});
it('should render web UI from CLI', async () => {
const response = await request(app)
.post('/api/web/render')
.send({
component: 'TestComponent',
data: { test: true }
});
expect(response.status).toBe(200);
expect(response.body.success).toBe(true);
});
});
Phase 5: Deploy and Monitor
Objective
Deploy bridge to production and monitor performance.
Scripts
# Build for production
npm run build:web
npm run build:server
# Deploy with Docker
cat > Dockerfile <<EOF
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3001
CMD ["node", "server.js"]
EOF
docker build -t web-cli-bridge .
docker run -d -p 3001:3001 web-cli-bridge
# Monitor with Prometheus
cat > prometheus.yml <<EOF
scrape_configs:
- job_name: 'bridge'
static_configs:
- targets: ['localhost:3001']
EOF
# Setup logging
mkdir logs
node server.js > logs/bridge.log 2>&1 &
# Monitor logs
tail -f logs/bridge.log
# Health check
curl http://localhost:3001/health
Success Criteria
- Bridge architecture designed
- Web interface functional
- CLI bridge operational
- Integration tested
- Deployed and monitored
Performance Targets
- API response time: <200ms
- WebSocket latency: <50ms
- Command execution: <5s
- Uptime: >99.9%
Best Practices
- Security: Implement authentication and authorization
- Error Handling: Graceful error handling on both sides
- Logging: Comprehensive logging for debugging
- Rate Limiting: Prevent abuse
- Validation: Validate all inputs
- Monitoring: Track performance metrics
- Documentation: Document API and protocols
- Testing: Comprehensive integration tests
Common Issues & Solutions
Issue: Command Execution Timeout
Symptoms: Long-running commands hang Solution: Implement timeout mechanism, use async execution
Issue: WebSocket Disconnections
Symptoms: Frequent disconnections Solution: Implement reconnection logic, use heartbeat
Issue: Security Vulnerabilities
Symptoms: Unauthorized command execution Solution: Implement authentication, whitelist commands
Integration Points
- swarm-orchestration: Execute orchestration from web
- performance-analysis: Display metrics in web UI
- slash-commands: Expose commands via web
References
- WebSocket Protocol
- REST API Design
- CLI Integration Patterns
- Security Best Practices
快速安装
/plugin add https://github.com/DNYoussef/ai-chrome-extension/tree/main/when-bridging-web-cli-use-web-cli-teleport在 Claude Code 中复制并粘贴此命令以安装该技能
GitHub 仓库
相关推荐技能
web-cli-teleport
设计该Skill帮助开发者根据任务特性选择最适合的Claude Code界面(Web或CLI),并能无缝地在两个环境间迁移会话。它通过分析任务复杂度、迭代需求和上下文窗口来优化工作流。关键特性包括智能界面推荐和会话状态的无损传输,让开发者能灵活切换工作环境。
when-creating-slash-commands-use-slash-command-encoder
其他这个Skill帮助开发者快速创建斜杠命令,用于快速访问微技能。它提供自动发现、参数验证和智能路由功能,让命令使用更加直观可靠。开发者可以生成命令定义、处理程序和验证逻辑,提升工作效率。
when-using-advanced-swarm-use-swarm-advanced
其他该Skill为开发者提供复杂多智能体系统的高级集群协调能力,支持动态拓扑切换和自组织行为。它适用于需要自适应拓扑选择和智能协调的复杂集群编排场景,可输出动态拓扑配置和性能优化报告。开发者需具备集群拓扑理解和多代理协调经验才能有效使用。
when-orchestrating-swarm-use-swarm-orchestration
其他该技能用于复杂多智能体集群的协调管理,支持任务智能分解、分布式执行与结果综合。它适用于需要多个专业代理协同处理复杂工作流的场景,能生成任务分解树并提供性能指标。开发者可借此实现跨代理的高效协调与监控。
