← Files Unix CopilotARCHIVED FILE

docs/RESEARCH_NOTES.md

4.52 KB · Sep 30, 2026 · 23:18 UTC

↓ Download file

# Research Notes — Unix Copilot

Research date: 2026-09-23

## Recommended name

Keep **Unix Copilot**.

It is short, clear, already consistent with the existing skill, and well inside OpenAI's 30-character public display-name limit.

Package: `unix-copilot`
Skill: `unix-copilot`

## Recommended architecture

Use a **skills-only plugin** for v0.1.

The current value is command translation, explanation, shell debugging, portability, data/file handling, and safety guidance. It does not need live terminal access.

A future MCP-backed version would only be appropriate if the product deliberately adds controlled actions such as:
- read-only system inspection;
- command execution inside a sandbox;
- package/version discovery;
- filesystem operations with explicit user authorization;
- process/service inspection.

Because terminal execution can have large side effects, a live-action version would need much stronger tool annotations, scope controls, authentication, approvals, sandboxing, and destructive-action review.

## Current OpenAI plugin requirements

Current public-directory validation includes:
- display name: max 30 characters;
- short description: max 30 characters;
- long description: max 4,000 characters;
- capabilities: max 20, each max 120 characters;
- starter prompts: max 3, each max 128 characters;
- skill frontmatter requires `name` and `description`;
- combined `plugin-name:skill-name`: max 64 characters;
- skills-only ZIP submissions do not need MCP configuration;
- bundled skills are scanned for safety/security;
- verified developer/business identity and policy attestations are required.

Sources:
- https://developers.openai.com/plugins/build/plugins
- https://developers.openai.com/plugins/build/skills
- https://developers.openai.com/plugins/deploy/submission
- https://developers.openai.com/plugins/deploy/submission-errors

## POSIX portability

POSIX.1-2024 remains the baseline for portable shell command-language behavior. It explicitly defines quoting, expansion, pathname expansion, and redirection semantics.

This supports the skill's existing rules:
- quote variables/paths when they represent one argument;
- do not confuse Bash/zsh extensions with POSIX `sh`;
- treat `>` as potentially truncating an existing file;
- distinguish shell parsing from utility-specific behavior.

Primary source:
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html

## GNU deletion and filename handling

Current GNU Coreutils documentation keeps protective behavior such as `rm --preserve-root`, and GNU Findutils documents NUL-delimited `xargs -0`.

These features reinforce the skill's safety rules, but they are GNU-specific and must not be presented as universal stock-macOS behavior.

Sources:
- https://www.gnu.org/software/coreutils/manual/
- https://www.gnu.org/software/findutils/manual/

## macOS

Apple's current Terminal documentation states that zsh is the default shell for new Terminal sessions unless configured otherwise.

The plugin should still verify the actual user's shell because:
- `$SHELL` generally describes the login shell;
- a script may run under another interpreter;
- Bash/zsh/POSIX syntax differs.

Apple also documents that `>` redirects output to a file and `>>` appends, so overwrite/truncation risk remains an important safety concern.

Sources:
- https://support.apple.com/guide/terminal/change-the-default-shell-trml113/mac
- https://support.apple.com/guide/terminal/redirect-terminal-input-and-output-apd1dbe647b/mac

## ShellCheck

ShellCheck remains a useful static-analysis tool for `sh`/Bash-family scripts and identifies syntax, semantic, robustness, and portability issues.

The plugin may recommend it for validation but should never treat a clean ShellCheck run as proof that:
- runtime data is correct;
- permissions are correct;
- a destructive target is safe;
- a script behaves correctly on every target environment.

Source:
https://github.com/koalaman/shellcheck

## Core principles retained

1. Generate guidance only; never claim execution without tool/user output.
2. Prefer portable POSIX commands when practical, but label GNU/BSD/macOS/Bash/zsh differences.
3. Treat destructive, recursive, privileged, and system-state-changing commands as high risk.
4. Preview first, execute separately, validate afterward.
5. Quote paths and variables safely.
6. Handle leading-dash and unusual filenames.
7. Avoid parsing `ls`.
8. Do not use plain line tools as general CSV parsers.
9. Preserve raw input for important transforms.
10. Never embed production secrets in commands, scripts, examples, logs, or shell history.

SHA-256: 0f0b09250554c5c2357de714061537c7a961008e8d0fac20a6b44af635ea903c