원클릭으로
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}}