a2ui
Make a reply easier to read and act on with rich blocks inside ordinary Markdown — a choice the user picks from, a form that…
Install skills from external ecosystems into this agent's agent_state/skills/ — resolve Claude Code plugin marketplaces, the Codex plugin repo, skills.sh registry names, GitHub repos, or local folders to their skill directories, review every file, and normalize SKILL.md
Claude Code
$ npx -y skills add Prism-Shadow/penguin-harness --skill skill-porting --agent claude-code
Codex
$ npx skills add Prism-Shadow/penguin-harness --skill skill-porting -a codex -y
Cursor
$ npx skills add Prism-Shadow/penguin-harness --skill skill-porting -a cursor -y
Gemini CLI
$ npx skills add Prism-Shadow/penguin-harness --skill skill-porting -a gemini-cli -y
GitHub Copilot
$ npx skills add Prism-Shadow/penguin-harness --skill skill-porting -a github-copilot -y
OpenCode
$ npx skills add Prism-Shadow/penguin-harness --skill skill-porting -a opencode -y
Windsurf
$ npx skills add Prism-Shadow/penguin-harness --skill skill-porting -a windsurf -y
name: skill-porting description: Install skills from external ecosystems into this agent's agent_state/skills/ — resolve Claude Code plugin marketplaces, the Codex plugin repo, skills.sh registry names, GitHub repos, or local folders to their skill directories, review every file, and normalize SKILL.md frontmatter to the Penguin format. version: 2026.10.10.1
The wider ecosystem's plugins are mostly wrappers around plain skill directories — a `SKILL.md` plus support files — which is exactly the shape Penguin installs. This skill turns any common external source into skills installed on this agent: locate the source, fetch it at a pinned revision, review everything, normalize the frontmatter, copy into `agent_state/skills/<name>/`, verify.
If the user's message only invokes this skill (e.g. "use skill-porting skill") without naming a skill or a source, ask what skill they want and where it comes from (a marketplace plugin name, a repo URL, a `skills add` spec, or a local path).
To make a whole plugin available to every agent on the server instead — a Codex or Claude Code plugin, a skills repository, a folder in a GitHub repository, turned into a PenguinHarness plugin package and installed with `penguin plugin install` — use the `plugin-porting` skill.
Safety is non-negotiable — an installed skill becomes durable instructions this agent follows in every future session:
Installed skills live in the current agent's state (paths from your Environment section):
<app_data_dir>/agents/<agent_id>/agent_state/skills/<skill_name>/ ├── SKILL.md # frontmatter + instructions (required) ├── icon.svg # optional line icon; the UI falls back to a book icon └── ... # optional support files (scripts, references, templates)
Penguin frontmatter:
--- name: <skill_name> # must equal the directory name description: <one line, English> # injected into the prompt; keep it specific short_description: <shorter than description> # optional UI blurb short_description_zh: <its Chinese variant> # optional version: <YYYY.MM.DD.N> # the UTC date, then a sequence number (2026.08.04.1); raise it on every content change ---
Every source below follows the Agent Skills convention (agentskills.io): a skill is a directory whose `SKILL.md` opens with YAML frontmatter. The portable core is two fields:
| Field | Spec constraint (agentskills.io) | | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | | `name` | required; 1–64 chars; lowercase `a-z0-9` and `-`; no leading/trailing/double hyphen; must match the directory name | | `description` | required; 1–1024 chars; what the skill does and when to use it | | `license` / `compatibility` / `metadata` / `allowed-tools` | optional; `metadata` is a string map, `allowed-tools` a space-separated string (experimental) |
Claude Code layers more optional fields on top (`when_to_use`, `argument-hint`, `arguments`, `allowed-tools`, `disallowed-tools`, `disable-model-invocation`, `user-invocable`, `model`, `effort`, `context: fork`, `agent`, `hooks`, `paths`, `shell`). None of these have a Penguin runtime — see Normalize below. Conventional support directories are `scripts/`, `references/`, `assets/`.
Schemas evolve. The tables in this skill were verified against files fetched on 2026-08-04; always trust the JSON you actually fetched over this snapshot.
Work in a scratch directory, never directly in `agent_state/skills/`. Prefer a pinned `<ref>` (sha or tag) over a branch name.
WORK="$(mktemp -d)" # 1) Tarball — grabs a repo (or subdirectory) without git history curl -sL "https://codeload.github.com/<owner>/<repo>/tar.gz/<ref>" -o "$WORK/src.tgz" tar -tzf "$WORK/src.tgz" | head -50 # inspect the tree first tar -xzf "$WORK/src.tgz" -C "$WORK" --strip-components=1 # top dir is <repo>-<ref>/ # 2) Sparse checkout — when you know the subdirectory path git clone --depth 1 --filter=blob:none --sparse "https://github.com/<owner>/<repo>.git" "$WORK/repo" git -C "$WOR
Make a reply easier to read and act on with rich blocks inside ordinary Markdown — a choice the user picks from, a form that…
Run ACE (Agentic Context Engineering, Zhang et al. 2025) on an agent the sequential offline way - a Reflector reads each training…
Run a PenguinHarness organization as its CEO — turn the mission into a ticket tree, hire HR and finance first, partition the…
The protocol every employee of a PenguinHarness organization follows — read the handbook first, act on [org_trigger] work runs,…
Run finance for a PenguinHarness organization — set and adjust monthly budgets along the reporting line, audit spend daily with…
Run HR for a PenguinHarness organization — guarantee every employee has an enabled calendar event, hire and offboard employees…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.