penguin-config
Manage model API keys, default models and per-agent vault secrets with the penguin CLI.
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
$ npx -y skills add Prism-Shadow/penguin-harness --skill skill-porting --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/skill-portingContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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.
A Penguin plugin is a package a deployment installs to add capability the harness does not ship, and nothing here produces one: the wider ecosystem's plugins are 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 installed skills: 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).
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: 1 # natural number; bump on every content change updated: 2026-08-04T11:40:00Z # ISO 8601 UTC; move it together with version ---
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 "$WORK/repo" sparse-checkout set <subdir> # pinning a sha instead of a branch: clone without --depth, then `git checkout <sha>` # 3) Directory listing w
🐧 Harness for RSI. Let AI Build AI. Multi-Agent Auto-Dev Platform. Everything is Transparent.
Repo: Prism-Shadow/penguin-harness
Manage model API keys, default models and per-agent vault secrets with the penguin CLI.
Drive PenguinHarness itself from a shell — list and create agents and sessions, send and steer messages mid-flight, and query costs and scheduled tasks via the…
Use whenever the user wants to build an agent application — their own program with an embedded agent, such as an AI app, an agentic app or a RAG app. This is…
Call model APIs through @prismshadow/agenthub — streaming text generation, image generation, speech synthesis, embeddings and the supported-model registry with…
Run one specified Test Agent on one specified Benchmark Case exactly once, privately score that execution, and return one protocol result.
Initialize an Agent's settings from a user requirement by writing AGENTS.md, setting identity metadata, and installing only needed Skills.