Install
$ agentstack add skill-hungv47-meta-skills-forsvn ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
/forsvn — Front Door
Classifies the ask, loads the context, routes or resumes. Always lands on a concrete next action. Capability metadata (route triggers, prerequisites, load map, artifact contract) lives in [routing.yaml](routing.yaml).
When To Use
- Vague ask: "help me launch this", "what should I work on?", "where do I start?"
- Resume: "continue", "pick up where I left off"
- New to the stack and don't know which skill to call.
- Want to see what's in flight across initiatives.
When NOT To Use
- You already know the right skill — call it directly.
- Deep multi-perspective debate — use
/debate-agents. - Full scoping conversation — use
/discover.
Operating Contract — 5 steps
Every invocation does exactly these five steps. No skipping, no looping.
Step 1 — State snapshot. Prefer the forsvn MCP server: call enter_workspace to load TRUTH / OUTPUT / MEMORY + the graph-derived next (one act, same data the disk walk produces). When the server is unavailable (no mcp__forsvn__* tools), fall back to the inline disk snapshot — graceful degradation, never a hard dependency. Full procedure + shell-bang fallback in [references/procedures/state-snapshot.md](references/procedures/state-snapshot.md).
Step 2 — Resume check. If .forsvn/routing/last-session.md exists AND status: awaiting-user AND timestamp Initiative: Next action: Open question:
Resume? (yes / no / new)
Default to resume if the current ask is empty or "continue" / "resume". Otherwise classify fresh per Step 3.
**Step 3 — Classify intent.** Pick exactly one intent class. The classifier dispatches to the right leaf via the per-domain chain file ([`references/chains/.md`](references/chains/)) — read it before dispatching.
| User says | Intent class | Route |
|---|---|---|
| "audience", "ICP", "competitors", "market", "diagnose", "prioritize", "funnel", "targets" | research | leaf via `references/chains/research.md` |
| "brand", "campaign", "copy", "headline", "landing page", "LP", "ad", "SEO", "video", "TikTok", "reel", "short", "cold email", "outreach", "humanize", "humanmax", "VN tone" | marketing | leaf via `references/chains/marketing.md` |
| "user flow", "tech stack", "architecture", "schema", "API", "code", "refactor", "machine cleanup", "docs", "README" | product | leaf via `references/chains/product.md` — **forsvn-dev pkg** |
| "scope this", "clarify", "what should we build", "requirements unclear" | scope | `/discover` |
| "debate this", "multiple perspectives", "poll", "consensus" | debate | `/debate-agents` |
| "decompose", "task list", "break down", "implementation order" | decompose | `/breakdown-tasks` (**forsvn-dev pkg**) |
| "review my work", "second opinion", "did I miss anything" | review | `/review-work` |
| "improvement loop", "track metric", "experiment ledger" | loop | `/run-pipeline` |
| Empty + no resume offer | summary | print state summary, exit |
| Ambiguous, multi-domain, "launch this", "ship this" | multi | scaffold a gated `plan.md`, stop for approval |
Rules:
- Single-domain → read the matching chain file and dispatch to its leaf.
- Multi-domain → scaffold a gated `.forsvn/runs//plan.md` (`status: proposed`) via `bin/plan.ts init`, render its steps table, and **stop for human approval before step 1** (the plan-preview trust contract). No step runs until a human approves (`status: approved`). Schema + helper: [`references/plan-spec.md`](references/plan-spec.md).
- Unclear (in-scope) → at most 2 clarifying questions. Hard cap. Then hand off to `/discover`.
- Unclear AND capability-shaped AND no index match → emit the gap line per [`references/procedures/nearest-match.md`](references/procedures/nearest-match.md) (terminal state **b**, not a clarify).
- Brand-gate: marketing/launch intent with `brand/BRAND.md` missing → route through `/create-brand` first.
- forsvn-dev gate: `product` intent and the `decompose` route resolve to the separate **forsvn-dev** package (engineering skills carved out 2026-06-16). If it isn't installed, tell the user to add `forsvn-dev` rather than dispatching into a missing skill.
**Terminal-state rule.** Every `/forsvn` turn ends in exactly one of three states — never a fourth "answered it myself" path:
- **invoke** — recorded → announced → invoked ≥1 capability (Steps 4–5).
- **gap** — the ask is *capability-shaped* (an imperative to produce / evaluate / plan a marketing, research, or product job) but matches no Step-3 row, no `chains/.md` rule, and no index entry → **do not answer from general knowledge**; emit the gap line per [`references/procedures/nearest-match.md`](references/procedures/nearest-match.md).
- **clarify** — in-scope but ambiguous → ≤2 bundled questions, then `/discover`.
A pure factual question ("what's a good CTR?") is answered normally — not a miss. A capability-shaped ask answered from general knowledge, or dropped, **is** the silent miss.
**Steps 4 + 5 — Load context, then dispatch: record → announce → invoke.** Full procedure in [`references/procedures/dispatch.md`](references/procedures/dispatch.md). Loading context includes the **foundation pre-flight** (Step 4.5): for research/marketing/product intent, a **cold repo** (no `ICP.md`, no prior session, no named deliverable) triggers the **infer-and-draft First-Run flow** — read the repo and draft ONE tailored artifact with labeled assumptions, never an intake form; a *partial* (or thin-with-prior-session) foundation warns before a generic run and offers `/research-icp` first, non-blocking. Write the routing record BEFORE invoking (`status: dispatched`, `dispatched-by: forsvn`), announce in one line (`→ Dispatching / — `), then invoke the leaf via the Skill tool with args. Confident classification auto-dispatches; two close candidates → present both (counts toward the 2-question cap), never auto-fire. An explicit `/forsvn` dispatch supersedes any router-hook hint. The dispatcher owns the session execution-profile ask (`references/_shared/execution-policy.md`); dispatched leaves inherit it.
## Pre-Dispatch — the classify flow IS the cold start
Needed dimensions: **intent class** (Step 3 table), **initiative slug** (Step 2 resume check / `last-session.md`), **domain chain rule** (the matching `chains/.md` row). Unresolved after reading state → at most 2 bundled clarifying questions (the Step 3 hard cap; close-candidate presentations count toward it); still unclear → hand off to `/discover`. A capability-shaped ask that resolves to no intent class is terminal state **gap** (not a clarify) — name the nearest 1–2 caps via [`references/procedures/nearest-match.md`](references/procedures/nearest-match.md). Dispatched leaves warm-start and skip their own pre-dispatch steps 1–2.
## Quality Gate
Instantiates `references/_shared/thin-critic-rubric.md` as a per-dispatch self-check (fast tier — no sub-agent):
- [ ] **Classification** — intent matches a Step 3 row or a chain-file rule; two close candidates were presented, never coin-flipped.
- [ ] **Sequencing** — routing record written (`status: dispatched`) BEFORE the Skill invocation.
- [ ] **Announcement** — the one-line `→ Dispatching / — ` preceded the invocation.
- [ ] **Coverage** — the turn ended in invoke / gap / clarify; no capability-shaped ask was answered from general knowledge or dropped.
Auto-fail: silent dispatch (no announcement), record-after-invoke, or answering a capability-shaped ask without invoking, naming the gap, or clarifying — redo the step per `references/anti-patterns.md`.
## Worked Example
"Brief the landing page first, then build" → marketing chain → `brief-landing-page`: record → announce → invoke → warm handoff, with the gate self-check: [`references/examples/dispatch-walkthrough.md`](references/examples/dispatch-walkthrough.md) [EXAMPLE].
## Anti-Patterns
[`references/anti-patterns.md`](references/anti-patterns.md) — 11 rules covering clarifying-question cap, silent dispatch, hand-off-and-stop, coin-flip auto-fire, routing-record sequencing, chain-file read, experience grep, brand-gate bypass, the silent miss, the cold-repo intake form. Re-read before dispatch.
## Durable Rules (protected)
## Completion Status
- **DONE** — classified intent, wrote routing record, announced + invoked the leaf (or presented candidates / state summary).
- **DONE_WITH_CONCERNS** — dispatched on a thin/partial foundation (no `ICP.md` / unratified / stale product context); the Step 4.5 pre-flight warned the user and recorded `foundation:`.
- **BLOCKED** — could not read project state AND could not bootstrap `.forsvn/`.
- **NEEDS_CONTEXT** — ask was empty, no prior session, no canonical sources. Printed state summary and exited.
## Next Step
After dispatch, the routed leaf skill owns the work. Re-invoke `/forsvn` with `resume` to pick up the next action from `last-session.md`.
## References
- `.forsvn/README.md` — state root contract.
- [`references/knowledge-ledger.md`](references/knowledge-ledger.md) — the `.forsvn/memory/knowledge.json` cache of project facts (loaded at dispatch so the front door never re-asks a known fact or re-runs a known producer; `bin/knowledge.ts`).
- [`references/chains/{research,marketing,product,meta}.md`](references/chains/) — per-domain dispatch chains.
- [`references/procedures/{state-snapshot,dispatch,nearest-match}.md`](references/procedures/) — Step 1, 4, 5, bootstrap, gap line.
- [`references/anti-patterns.md`](references/anti-patterns.md).
## Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [hungv47](https://github.com/hungv47)
- **Source:** [hungv47/meta-skills](https://github.com/hungv47/meta-skills)
- **License:** MIT
- **Homepage:** https://skills.forsvn.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.