con un clic
xterm-pty
xterm.js 6.0 + portable-pty terminal patterns for agentcockpit
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
xterm.js 6.0 + portable-pty terminal patterns for agentcockpit
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Testing strategy, patterns, and coverage optimization for quality assurance. Use this skill whenever the task involves deciding what to test, how to structure tests, what coverage to aim for, when to use mocks vs real dependencies, or how to write tests that actually catch bugs (not just pass). Also use when the user asks about test pyramids, flaky tests, integration vs unit, TDD, or improving an existing test suite.
Production readiness validation — runs all checks before merging or deploying. Use this skill whenever the task involves verifying that code is ready to ship: type checking, linting, tests passing, coverage thresholds, dead code, security issues, or any pre-merge checklist. Also use when the user asks "is this ready?", wants a pre-PR review, or needs to confirm nothing is broken after a refactor.
Swift architecture reference — SwiftUI, UIKit, Combine, async/await, actors, and production best practices for Swift 5.9/6.0 (2024-2025). Use when making architectural decisions, reviewing Swift code, or selecting libraries. Also use when the user mentions iOS development, macOS apps, or Apple platform development.
UI/Frontend architecture reference - React 19, Next.js 15, Vue 3, Svelte 5, Angular 19, CSS modern features, component libraries, state management, and production best practices for 2024-2025. Use when building frontend UIs, selecting frameworks, reviewing component code, or making frontend architecture decisions.
UX design reference - research methods, design systems, accessibility (WCAG 2.2, EAA), UX laws, AI-driven workflows, tools (Figma, Penpot), and production best practices for 2024-2025. Use when making UX decisions, reviewing designs, implementing accessibility, selecting design tools, or applying UX principles.
C# architecture reference - frameworks, design patterns, ASP.NET Core, Entity Framework, Blazor, Unity, and production best practices for C# 12/13 and .NET 8/9 (2024-2025). Use when making architectural decisions, reviewing C# code, or selecting libraries.
Basado en la clasificación ocupacional SOC
| name | xterm-pty |
| description | xterm.js 6.0 + portable-pty terminal patterns for agentcockpit |
agentcockpit uses xterm.js 6.0 for terminal rendering and portable-pty (Rust) for cross-platform PTY management. The PTY runs user's shell, and AI agents are launched as commands within it.
TERM=xterm-256color, 10000 line scrollbackUser types → xterm.onData → usePty.write → ptyWrite IPC → Rust PtyManager.write → PTY master
PTY output → Rust reader thread (4096 byte chunks) → pty-output-{id} event → usePty.onData → xterm.write
// PtyManager::spawn creates PTY pair, spawns $SHELL
let pair = pty_system.openpty(PtySize { rows, cols, .. })?;
let mut cmd = CommandBuilder::new(shell);
cmd.cwd(cwd);
cmd.env("TERM", "xterm-256color");
// Clear nested detection vars
cmd.env_remove("CLAUDECODE");
cmd.env_remove("CLAUDE_CODE_ENTRYPOINT");
let child = pair.slave.spawn_command(cmd)?;
import { ptyWrite } from '../services/tauriService';
await ptyWrite(ptyId, data);
The reader thread buffers incomplete UTF-8 sequences across reads using find_utf8_boundary() to avoid splitting multi-byte characters.
const { signalOutput, signalUserInput } = useTerminalActivity({
terminalId,
threshold: 3000, // ms of silence before "finished"
onFinished: handleTerminalFinished,
});
// In TerminalView onData callback
const stripped = data.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, ''); // Strip ANSI
resumeBufferRef.current += stripped;
const match = resumeBufferRef.current.match(
/claude\s+--resume\s+([0-9a-f]{8}-[0-9a-f]{4}-...-[0-9a-f]{12})/
);
if (match) sessionEvents.emit('resume-detected', { uuid: match[1], terminalId });
display:none