winuxcmd

star 248

Repository-local WinuxCmd workflow for AI agents: download a released WinuxCmd build, integrate it into .winuxcmd/bin, activate the workspace without touching global PATH, use man.exe on Windows, run MSVC builds/tests, and package the skill for release. Use when working in this repository or preparing WinuxCmd release assets and the skill bundle.

caomengxuan666 By caomengxuan666 schedule Updated 6/9/2026

name: winuxcmd description: Repository-local WinuxCmd workflow for AI agents: download a released WinuxCmd build, integrate it into .winuxcmd/bin, activate the workspace without touching global PATH, use man.exe on Windows, run MSVC builds/tests, and package the skill for release. Use when working in this repository or preparing WinuxCmd release assets and the skill bundle.

WinuxCmd

Use this skill when working inside the WinuxCmd repository or when preparing a WinuxCmd release bundle.

Start Here

  1. If you are already in the repo, activate the workspace-local command directory for the current shell:
.\scripts\activate-workspace.ps1
  1. If you are in cmd, use:
scripts\activate-workspace.cmd
  1. If you are starting from a downloaded WinuxCmd release, register the release binary in the workspace first:
.\scripts\setup-workspace-bin.ps1 -WinuxCmdPath "C:\path\to\winuxcmd.exe"
.\scripts\activate-workspace.ps1
  1. When you need command help on Windows, call man.exe, not man.

Why man.exe

  • PowerShell resolves aliases before native executables.
  • man is often an alias for PowerShell help, so man.exe is the unambiguous WinuxCmd command.
  • Use explicit .exe names whenever an alias could collide with a WinuxCmd tool.

Workspace Activation

  • .winuxcmd/bin is the repo-local command directory.
  • scripts/setup-workspace-bin.ps1 creates the command links there.
  • scripts/activate-workspace.ps1 prepends .winuxcmd/bin to the current PowerShell session only and clears common alias collisions for that session.
  • scripts/activate-workspace.cmd does the same for CMD sessions.
  • scripts/install-workspace-profile-hook.ps1 adds a per-user PowerShell 7 / Windows PowerShell 5.1 hook so new shells auto-activate in this repository.
  • If you are already inside an extracted release directory, scripts/create_links.ps1 can generate the release-side command links there.

Typical commands after activation:

man.exe ls
grep.exe -n TODO README.md
winuxcmd.exe help sort

Rules

  • Do not modify user PATH or machine PATH.
  • Do not rely on PowerShell aliases such as man or ls.
  • Use the repository-local .winuxcmd\bin directory for command execution.
  • If a command exists both as a PowerShell alias and as a WinuxCmd executable, always call the executable with .exe.

Build and Test

  • Use scripts/build-with-vs.ps1 when you need an MSVC build/test run.
  • Default target: winuxcmd-tests.
  • Default build directory: build-vs.
  • Default environment script: vcvars64.bat.

Command Guidance

  • After activation, bare ls, cp, mv, rm, and similar common commands should resolve to WinuxCmd in the current session.
  • Use the repo's GNU-parity flags when they reduce AI mistakes:
    • ls: -d, -b, -f, -I, -U, -X, -v, -i, -s, -h/--human-readable, --block-size=SIZE, -Q, -b, -q, -N, --quoting-style=WORD; directory long listings include total, hard-link counts come from Windows file metadata, -h humanizes long sizes and -s/total, sort/time/quoting-affecting options use last-occurrence precedence, and wildcard matches that are directories list contents unless -d is active
    • cp: -a/--archive, -p, -t, -T, -n, -u, -b/--backup, -S/--suffix; -t requires an existing directory, -t and -T conflict, self-copy is refused except --force --backup, and plain file copies do not create missing parents
    • mv: -t, -T, -n, -u, -b; -t requires an existing directory, -t and -T conflict, and ordinary multi-source moves require an existing target directory after wildcard expansion
    • rm: -f, -d/--dir, -r/-R/--recursive, -I, -i, --interactive[=never|once|always], --one-file-system; rm -f with no operands succeeds, -d removes only empty directories, and -f/-i/-I/--interactive=WHEN use last-option precedence for prompting/force behavior
    • install: -D, -d, -t, -T; -t and -T conflict, multi-source installs require an existing target directory after wildcard expansion, -D -t creates the target directory, and -d creates parent directories
    • sort: repeatable -k/--key with F[.C][OPTS][,F[.C][OPTS]], --sort=WORD, -M, -R, --random-source, -S/--buffer-size, -s, -t \0, -u, -V; -t \0 uses NUL as the field separator, global ordering modes use last-occurrence precedence, -n does not accept leading + or exponent notation, -h compares sign then SI suffix then value, -u uses sort-key equality and disables last-resort whole-line ordering, -c/-C -u rejects adjacent equal keys, -b affects -k F.C character counts, and end position .0 means field end
    • grep: -E, -F, -G, repeatable -e/--regexp, repeatable -f/--file, -i, -v, -n, -c, -l, -L, -H/-h, --label, --line-buffered, repeatable --include/--exclude/--exclude-from/--exclude-dir, -A/-B/-C context output, -o, -D/--devices, --color[=WHEN]; bare --color defaults to auto, invalid color modes fail, zero-byte -f pattern files match nothing, include/exclude file rules keep command-line order and the last matching rule wins, command-line file operands match include/exclude globs by name suffix, --exclude-dir skips matching command-line directories and ignores trailing slashes, context ranges merge, match prefixes use :, context prefixes use -, -o warns while ignoring context options, and wildcard operands that expand to directories recurse when -r/-R is active
    • sed: ordered repeatable -e/--expression and -f/--file, -i[SUFFIX] / --in-place[=SUFFIX], -n/--quiet/--silent, -E, -r, -s, -z/--null-data/--zero-terminated, -u/--unbuffered, -b/--binary; in-place editing creates no backup when suffix is omitted, appends suffix when it has no *, and replaces each * with the current filename otherwise; s/// supports &, \1-\9, numeric occurrence flags, g, p, and I/i; address negation with !, first~step, 0~step, and /regex/I are supported
    • head: -c, -n, -q, -v, -z; GNU count suffixes are accepted (KB/MB/.../QB decimal, K/M/.../Q binary, and KiB/.../QiB IEC) with overflow rejected; first-argument obsolete -[num][bkm][cqv] is accepted for compatibility, but prefer -c NUM or -n NUM
    • tail: -c, -n, -q, -v, -z, -f, -F, -s, --max-unchanged-stats, repeatable --pid, --debug, --retry; GNU count suffixes are accepted (KB/MB/.../QB decimal, K/M/.../Q binary, and KiB/.../QiB IEC) with overflow rejected; obsolete -[num][bcl][f] is accepted when it does not conflict with normal parsing, but prefer -c NUM, -n NUM, and -f
    • find: -L, -H, -name, -iname, -path, -ipath, -regex, -iregex, -type, -size, -empty, -mtime, -mmin, -newer, -mindepth, -maxdepth, -depth, -true, -false, !, -not, implicit AND, -a/-and, -o/-or, comma expressions, parentheses, -print, -print0, -printf (%p, %f, %h, %d, %y, %s, %m, %T@, %%), -delete, -prune, -quit, -exec ... {} ;, -exec ... {} +, -ok ... {} ;, -ok ... {} +; predicate operators and these common actions follow GNU expression precedence and short-circuit behavior; -H follows only command-line symlink roots unless -L is active; remaining gaps are full -printf, full GNU regex dialect details, and -delete plus -prune interaction edge cases
    • cut: -b/--bytes, -c/--characters, -f/--fields, --complement, --output-delimiter, -z
    • df: -h, -H, -k, -T/--print-type, -i/--inodes
    • du: -a, -A/--apparent-size, -B/--block-size, -b/--bytes, -c/--total, -d/--max-depth, -h, --si, -H/--dereference-args, -k, -m, -0/--null, -S/--separate-dirs, -s, -t/--threshold, --time[=WORD], --exclude=PATTERN, -X/--exclude-from, --files0-from; default output uses 1024-byte blocks, later size-display options override earlier ones, --block-size=human-readable|si is accepted, --max-depth=0 prints only the root total, --time=atime|access|use|ctime|status|mtime uses last-occurrence precedence, ctime/status currently map to creation time on Windows, --exclude patterns stay literal option patterns, Windows size reporting uses file length as the allocated/apparent-size approximation, and -H is not SI output
    • env: -i/--ignore-environment, repeatable -u/--unset=NAME, -0/--null, -C/--chdir=DIR, NAME=VALUE COMMAND [ARG]...
    • printenv: -0/--null; named empty variables still emit empty records, mixed found/missing names preserve found output while returning status 1, and full enumeration skips Windows hidden =... pseudo-entries
    • tty: -s/--silent, --quiet; extra operands keep GNU-style stderr diagnostics with exit 2, non-tty stdin returns 1, and broken stdout during non-silent output returns GNU/uutils-style exit 3
    • pwd: -L/--logical, -P/--physical; default output remains physical, -L prefers an absolute PWD environment value when present, and the -L/-P family uses last-occurrence precedence
    • realpath: -e, -E, -m, -q, -s, -z, --relative-to, --relative-base; at least one path operand is required, canonicalization-mode options use last-occurrence precedence, empty path / relative-option operands are rejected as invalid empty strings, and under -e the relative-option operands must resolve to directories
    • readlink: -f, -e, -m, -n, -q, -s, -v, -z; canonical modes normalize Windows paths, default diagnostics stay quiet, and the -q/-s/-v family uses last-occurrence precedence
    • xargs: -n/--max-args, -L/--max-lines, -l, -I, -i/--replace, -P/--max-procs, -p/--interactive, -0/--null, -d/--delimiter, -a/--arg-file, -E, -e/--eof, --show-limits, -t/--verbose, -o/--open-tty, -r/--no-run-if-empty, -s/--max-chars, -x/--exit, --process-slot-var; -p prompts before each command and runs only for y/Y, default echo output has no trailing space; mutually exclusive -I/-i, -L/-l, and -n families use the last conflicting family and warn, except -I ... -n1; child failures map GNU-style for common cases (1..125 -> 123, 255 -> 124, not found -> 127)
    • dd: if=, of=, bs=, ibs=, obs=, count=, skip=, seek=, conv=sync, conv=notrunc, status=none|noxfer|progress
  • Treat wildcard characters as syntax unless the operand is a file input: grep patterns, sed scripts, jq filters, xargs input items, and destination operands such as tee OUT or install SRC DEST stay literal. File input operands such as grep PATTERN *.txt and sed SCRIPT *.txt expand inside WinuxCmd.
  • For fixed-arity file commands such as diff, diff3, split, and csplit, let wildcard expansion resolve to the exact number of operands the command expects; do not guess a first match.
  • Keep the implementation matrix and GNU parity ledger synchronized with code changes in the same batch.
  • If a command is already available as a WinuxCmd executable, prefer it over a PowerShell alias or external fallback.

Release Packaging

  • When packaging the skill, load references/release-packaging.md first.
  • Confirm the bundle layout, then package the standalone bundle with the Windows binaries.
  • Keep the skill bundle rooted at winuxcmd/ with SKILL.md at the top level of the archive.
  • Keep the skill bundle small and release-ready; long-form details belong in references/.

References

  • references/workspace-integration.md
  • references/download-and-integrate.md
  • references/command-guidance.md
  • references/release-packaging.md
Install via CLI
npx skills add https://github.com/caomengxuan666/WinuxCmd --skill winuxcmd
Repository Details
star Stars 248
call_split Forks 8
navigation Branch main
article Path SKILL.md
More from Creator
caomengxuan666
caomengxuan666 Explore all skills →