一键导入
skillify
Turn a working browse or scrape flow into a reusable vibestack skill — codify the steps into a new SKILL.md, validate, and install it.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Turn a working browse or scrape flow into a reusable vibestack skill — codify the steps into a new SKILL.md, validate, and install it.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with elements, verify page state, diff before/after actions, take annotated screenshots, check responsive layouts, test forms and uploads, handle dialogs, and assert element states. ~100ms per command.
Chief Security Officer mode. Infrastructure-first security audit: secrets archaeology, dependency supply chain, CI/CD pipeline security, LLM/AI security, skill supply chain scanning, plus OWASP Top 10, STRIDE threat modeling, and active verification. Two modes: daily (zero-noise, 8/10 confidence gate) and comprehensive (monthly deep scan, 2/10 bar). Trend tracking across audit runs.
CEO/founder-mode plan review. Rethink the problem, find the 10-star product, challenge premises, expand scope when it creates a better product. Four modes: SCOPE EXPANSION (dream big), SELECTIVE EXPANSION (hold scope + cherry-pick expansions), HOLD SCOPE (maximum rigor), SCOPE REDUCTION (strip to essentials).
Update the installed vibestack pack to the latest release — detect the install (global git checkout or a project-local vendored copy), run the upgrade, run version migrations, and show what changed.
Safety guardrails for destructive commands. Warns before rm -rf, DROP TABLE, force-push, git reset --hard, kubectl delete, and similar destructive operations. User can override each warning.
Generate missing documentation from scratch for a feature, module, or entire project. Uses the Diataxis framework (tutorial / how-to / reference / explanation) to produce complete, structured documentation. Can be invoked standalone or called by /document-release when it finds coverage gaps.
| name | skillify |
| description | Turn a working browse or scrape flow into a reusable vibestack skill — codify the steps into a new SKILL.md, validate, and install it. |
| allowed-tools | ["Bash","Read","Write","AskUserQuestion"] |
| triggers | ["skillify this","make this a skill","save this flow as a skill","codify this"] |
Use right after a browse/scrape flow worked and the user wants it reusable —
"skillify this", "make this a skill", "save this flow". It writes a new skill in
the local repo so future invocations just run /the-new-name.
Provenance guard (STOP if it fails). /skillify only codifies a flow that actually ran in this session. If there is no recent, working browse/scrape flow to point at — the user is asking you to invent a skill from scratch — refuse: "skillify codifies a flow that already worked; I don't see one in this session. Run the browse/scrape steps first, confirm they work, then skillify them." Do not fabricate steps.
From the session that just worked, pin down:
$B verbs / chain that worked, in order, with the
selectors and the URL (or URL pattern / parameter) used.If any of these is unclear, ask once with AskUserQuestion. Pick a short
kebab-case name.
Find the vibestack repo (the vibe-* binaries are symlinks into it):
REPO="$(cd "$(dirname "$(readlink "${VIBESTACK_HOME:-$HOME/.vibestack}/bin/vibe-config" 2>/dev/null)")/.." 2>/dev/null && pwd || true)"
[ -f "$REPO/install" ] || { echo "REPO_NOT_FOUND"; }
If REPO_NOT_FOUND, ask the user where they cloned vibestack.
Name-collision check (STOP before writing). A new skill must not silently overwrite an existing one:
[ -e "$REPO/skills/<name>" ] && echo "NAME_TAKEN" || echo "NAME_FREE"
If NAME_TAKEN, use AskUserQuestion: "A skill named <name> already exists.
A) Pick a different name, B) Overwrite it (its current SKILL.md is replaced)."
Only proceed to write when the answer is a free name or an explicit overwrite.
Write skills/<name>/SKILL.md with: frontmatter (name, one-sentence
description, allowed-tools, triggers), a ## When to invoke section, the
{{include lib/snippets/browse-setup.md}} directive, the captured $B steps with
their selectors, the extraction/return logic, and a closing
{{include lib/snippets/capture-learnings.md}}. Match the house style of an
existing skill (e.g. skills/scrape/SKILL.md). Keep brand-clean — no external
project names.
Validate the source BEFORE installing, so a half-broken skill never reaches the live skills dir:
cd "$REPO"
bin/vibe-render-skill "skills/<name>/SKILL.md" /tmp/_skillify_check.md && echo "RENDER_OK" || echo "RENDER_FAIL"
# Run the repo's zero-external-brand audit (the grep in CLAUDE.md) against the
# new skill — it must return nothing. Report BRAND_HIT if it matches anything.
Discard-on-failure. If RENDER_FAIL or BRAND_HIT, do NOT install. Remove the
staged source and stop, reporting what failed:
# only when validation failed:
rm -rf "skills/<name>"
Approval gate (STOP — do not install without it). Installing writes into the
user's live skills dir. Use AskUserQuestion: "New skill /<name> validated
(render OK, brand clean). Install it into your skills dir now? A) Install,
B) Keep the source only — I'll /ship it myself." Only run ./install on A.
./install --yes
Confirm install reports the new count. Then functionally verify the skill is
resolvable: bin/vibe-render-skill on the installed path succeeds and the
frontmatter name matches <name>.
Tell the user the new /<name> is installed; a new agent session may be needed
if the host doesn't hot-reload. Suggest they bump the skill count in the README
and docs/skills.md, and /ship the change when ready.
{{include lib/snippets/capture-learnings.md}}