lov-bp-outline
Turn existing project materials into a source-backed investor BP brief, evidence ledger, and 12–15 slide outline. Use before making slides, when the product positioning is unclear, or when an existing outline is too technical, generic, or unsupported. Trigger on "写 BP 大纲", "融资叙事"
Install
npx skills add https://github.com/lovstudio/skills/tree/main/skills/bp-outline
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install lovstudio-skills@llmmart
git clone https://github.com/lovstudio/skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole lovstudio/skills collection as a plugin from our marketplace. Git is the plain clone.
README
BP 蓝图 · BP Blueprint
把项目资料整理成投资人能看懂的产品定义、证据账本和 12–15 页 BP 大纲。
安装
npx skills add bp-outline -g -y
使用
$lov-bp-outline 根据当前仓库和用户访谈写 BP 大纲
$lov-bp-outline 重写这份大纲,先不要做 PPT
交付物
brief.mdevidence-ledger.mdoutline.md- 待补证据清单
大纲确认后,可交给 lov-bp-deck 继续制作 PPT。
License
MIT
Skill manifest
BP 蓝图 · BP Blueprint
Build the investment story before choosing a visual style. This skill stops at an approved, source-backed outline and does not generate PPTX/PDF.
Input
Any combination of:
- repository, product docs, PRD, website, prior applications, or existing BP;
- analytics exports, payment/usage data, GitHub evidence, and customer notes;
- product screenshots, founder profile, team history, brand assets;
- financing stage, amount, equity/instrument, and milestones.
Output Contract
business-plan/
├── brief.md
├── evidence-ledger.md
├── outline.md
└── assets/
The output is ready for lov-bp-deck only when the evidence gate passes.
Workflow (MANDATORY)
Step 0: Resolve the skill and workspace
Resolve this SKILL.md directory as SKILL_DIR. If the user already has a
business-plan/ workspace, continue in it. Otherwise initialize one:
python3 "$SKILL_DIR/scripts/init_bp.py" \
--name "Project Name" \
--stage seed \
--output ./business-plan
Read references/user-config.md for portable path and brand resolution.
Step 1: Inspect before asking
Search the user's supplied scope first. Prefer exact repo/files/URLs over broad discovery. Extract known audience, financing stage, ask, product, buyer, traction, business model, market, competition, growth, and team evidence.
Ask at most one compact round of questions for missing decisions that materially change the outline. If the user says “不要问”“按推荐方案”, assume seed investors, 12–15 slides, 8–10 minutes, and mark the financing ask as a visible gap if unknown.
Step 2: Build the evidence ledger
Record every material claim as:
- fact;
- inference;
- assumption;
- missing.
Include source, as-of date, slide destination, and next action. For changing claims,
verify current authoritative sources. Never substitute a broad AI forecast for a
buyer-linked market calculation. Read references/evidence-and-market.md.
Step 3: Define the investor-readable product
Before the vision, draft three one-line definitions:
- literal category;
- accurate comparator (“X for Y”);
- category-creation language with a plain-language explanation.
Choose the line a non-technical investor can repeat after ten seconds. Separate:
early wedge → adjacent users → long-term market
Treat technical modes as implementation unless the buyer actually pays for the
mechanism. Read references/investor-story.md.
Step 4: Write the 12–15 page argument
Use this 12-page base:
- one sentence: who you are;
- concrete user problem;
- how the product solves it;
- product demo or core experience;
- why now;
- real validation;
- business model;
- market size and wedge;
- competition and differentiation;
- growth plan;
- why this team;
- financing ask, use, and next proof.
Expand only when a product demo, moat, B2B deployment model, or financial model
needs a dedicated page. Read references/deck-architecture.md.
Each slide entry must contain:
- conclusion headline;
- investor takeaway;
- evidence IDs and sources;
- exact visual/chart proof;
- speaker purpose;
- unresolved gap or “none”.
Step 5: Run the evidence gate
The outline is ready only when:
- all 12 investor questions are covered;
- the product definition is investor-readable;
- every core number traces to evidence or a labeled assumption;
- traction stages and denominators are not mixed;
- TAM/SAM/SOM has a buyer-price-reachability bridge;
- the financing ask connects to 18–24 month validation milestones;
- no placeholder is hidden as final copy.
Report the page map and at most five evidence gaps. Do not start slide generation
unless the user asked for a complete BP or explicitly continues with bp-deck.
Recommended Next Step
$lov-bp-deck ./business-plan/outline.md
Runtime context (shared)
运行前读取本 Skill 包的 skill.yaml,由宿主提供 skill-runtime/v1 上下文。字段解析顺序为:当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。
- 只使用 Manifest 声明的字段;Profile 保存公开品牌事实,Preferences 保存个人工作偏好。
required: true字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题;用户明确同意后再保存回答。- 报错提供可复制的
context_id、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。
通用反馈闭环
用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行:
- 先判断意见是
task-specific(仅本次)还是reusable(可跨任务复用)。 task-specific只修改当前任务,不改 Skill。reusable先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。- 完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。
reusable修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。
Files (skills)
-
assets
-
templates
-
brief.md 1.2 KB
# {{PROJECT_NAME}} — BP Brief Updated: {{DATE}} ## Financing task - Audience: early-stage investors who may not know the technology - Stage: {{STAGE}} - Target presentation: 12–15 slides / 8–10 minutes - Financing ask: missing - Instrument / equity: missing - Validation window: 18–24 months (assumption until confirmed) ## Product definition - One-line product definition: missing - Category: missing - Core user / buyer: missing - Core job to be done: missing - Early wedge: missing - Adjacent users: missing - Long-term market: missing ## Investment thesis - Problem: missing - Product insight: missing - Why now: missing - Evidence already proven: missing - Evidence not yet proven: missing - Business model: missing - Defensibility: missing - Founder–market/product fit: missing ## Required source material - [ ] Product docs and current screenshots - [ ] Current usage / retention / revenue data - [ ] Customer interviews, pilots, orders, or support evidence - [ ] Competitor product pages and pricing - [ ] Market data with source and date - [ ] Team profile and execution evidence - [ ] Financing amount, use of funds, and milestones - [ ] Brand assets and contact action -
evidence-ledger.md 1.5 KB
# {{PROJECT_NAME}} — Evidence Ledger Updated: {{DATE}} Status values: `fact`, `inference`, `assumption`, `missing`. | ID | Claim | Status | Source | As of | Slide | Notes / next action | |---|---|---|---|---|---|---| | E-001 | Product definition | missing | — | {{DATE}} | 1 | Validate with product and buyer language | | E-002 | Core problem evidence | missing | — | {{DATE}} | 2 | Add interview, workflow, or measured cost | | E-003 | Product workflow | missing | — | {{DATE}} | 3–4 | Add real screenshot and current capability boundary | | E-004 | Why-now evidence | missing | — | {{DATE}} | 5 | Verify current primary sources | | E-005 | Traction | missing | — | {{DATE}} | 6 | Separate install, active, retained, trial, and paid | | E-006 | Business model | assumption | — | {{DATE}} | 7 | Identify buyer, offer, price, and sales motion | | E-007 | TAM/SAM/SOM | missing | — | {{DATE}} | 8 | Build bottom-up and cross-check top-down | | E-008 | Competition | missing | — | {{DATE}} | 9 | Verify current product pages and pricing | | E-009 | Growth plan | assumption | — | {{DATE}} | 10 | Tie channels to measurable capacity | | E-010 | Team fit | missing | — | {{DATE}} | 11 | Add execution and domain evidence | | E-011 | Financing ask | missing | — | {{DATE}} | 12 | Amount, structure, use, window, milestones | ## Source notes Record definitions, denominators, query dates, screenshots, and exclusions here. Do not paste credentials or private customer information. -
outline.md 3.1 KB
# {{PROJECT_NAME}} — Investor BP Outline Stage: {{STAGE}} Updated: {{DATE}} Audience: Early-stage investors Length: 12–15 slides / 8–10 minutes ## Slide 1 — Product definition Headline: TODO — one investor-readable definition Investor takeaway: TODO Evidence: E-001 Visual: clean cover; product/company name + definition Speaker purpose: establish what the company is in ten seconds Gap: E-001 ## Slide 2 — Concrete problem Headline: TODO — state the user pain as a conclusion Investor takeaway: TODO Evidence: E-002 Visual: before workflow, direct quote, or measured pain Speaker purpose: prove frequency and cost Gap: E-002 ## Slide 3 — Solution Headline: TODO — show the changed user outcome Investor takeaway: TODO Evidence: E-003 Visual: before/after or solution flow Speaker purpose: connect pain to the product insight Gap: E-003 ## Slide 4 — Product demo Headline: TODO — describe what the real experience proves Investor takeaway: TODO Evidence: E-003 Visual: real product screenshot or demo sequence Speaker purpose: make the product tangible Gap: E-003 ## Slide 5 — Why now Headline: TODO — state the structural change Investor takeaway: TODO Evidence: E-004 Visual: timeline or 2–3 converging trends with sources Speaker purpose: explain timing Gap: E-004 ## Slide 6 — Real validation Headline: TODO — state what is proven and what is not Investor takeaway: TODO Evidence: E-005 Visual: evidence ladder, cohort, revenue, pilots, or usage chart Speaker purpose: reduce execution and demand uncertainty Gap: E-005 ## Slide 7 — Business model Headline: TODO — explain who pays for what value Investor takeaway: TODO Evidence: E-006 Visual: value/revenue staircase or buyer-to-payment flow Speaker purpose: show how money enters the system Gap: E-006 ## Slide 8 — Market and wedge Headline: TODO — connect the first buyer to the larger market Investor takeaway: TODO Evidence: E-007 Visual: bottom-up TAM/SAM/SOM bridge with formulas Speaker purpose: establish venture-scale potential and credible entry Gap: E-007 ## Slide 9 — Competition and differentiation Headline: TODO — state the defensible position Investor takeaway: TODO Evidence: E-008 Visual: comparison table or defensible quadrant Speaker purpose: show alternatives honestly and explain the wedge Gap: E-008 ## Slide 10 — Growth plan Headline: TODO — state the repeatable acquisition hypothesis Investor takeaway: TODO Evidence: E-009 Visual: funnel, flywheel, or phased channel plan Speaker purpose: connect channel activity to measurable growth Gap: E-009 ## Slide 11 — Team fit Headline: TODO — state why this team is unusually suited Investor takeaway: TODO Evidence: E-010 Visual: evidence timeline, founder-product loop, or customer access Speaker purpose: prove founder–market/product fit Gap: E-010 ## Slide 12 — Financing and next proof Headline: TODO — amount + most important proof this round buys Investor takeaway: TODO Evidence: E-011 Visual: use-of-funds chart + 18–24 month milestone gates + contact Speaker purpose: make the investment decision concrete Gap: E-011
-
-
-
references
-
deck-architecture.md 2.9 KB
# 12–15 Slide Investor Deck Architecture ## Base 12-slide sequence | # | Investor question | Required proof | Strong visual | |---:|---|---|---| | 1 | What are you? | Product definition + company/brand | Clean cover or one visual metaphor | | 2 | What hurts? | Concrete user moment, frequency, cost | Before workflow, quote, or pain funnel | | 3 | What changes? | Specific product response | Before/after or solution flow | | 4 | Does it work? | Real product or experience | Product screenshot / demo sequence | | 5 | Why now? | 2–3 structural changes | Timeline or converging trend chart | | 6 | What is proven? | Usage, retention, revenue, speed, or pilots | Evidence ladder / cohort / verified metrics | | 7 | How do you make money? | Buyer, offer, price, sales motion | Value/revenue staircase | | 8 | How large can it be? | Source-backed TAM/SAM/SOM + wedge | Market bridge / rings with methodology | | 9 | Why you vs. alternatives? | Honest competitor dimensions | Matrix, table, or value-chain map | | 10 | How will you grow? | Channels, milestones, economics | Funnel, flywheel, or phased roadmap | | 11 | Why this team? | Founder-market/product fit | Evidence timeline, not résumé wall | | 12 | What are you raising? | Ask, use, runway, 18–24 month proof | Use-of-funds chart + milestone gates | ## When to expand to 13–15 slides Add a page only when it carries evidence that cannot fit cleanly elsewhere: - a second product-demo page for a complex workflow; - a technology/moat page with measurable defensibility; - a dedicated go-to-market wedge page; - a regulated/B2B deployment model; - a financial model when revenue complexity materially affects the investment case. Do not add generic mission, feature grids, long roadmaps, or “thank you” pages merely to reach a page count. ## Slide contract Each outline entry should contain: ```markdown ## Slide 06 — Real validation Headline: One conclusion, not a topic label Investor takeaway: What uncertainty this page removes Evidence: Exact facts and source IDs Visual: Chart type and field mapping Speaker purpose: Why this page exists in the spoken story Gap: Missing evidence or “none” ``` ## Page discipline - One page, one argument. - The headline contains the conclusion. - A viewer should understand the page in 8–12 seconds. - Keep only the numbers needed for the conclusion. - Put methodology and source notes at the bottom, not in the speaker's memory. - 8–10 minutes means roughly 35–50 seconds per page; demo pages may take longer. ## Executive summary rule For a long-form business plan, write the executive summary last. It must include: 1. what the company does; 2. problem and buyer; 3. solution and difference; 4. market opportunity with a traceable number; 5. exact ask and what it unlocks. The pitch deck's first and last pages should make the same promise and ask, from opposite ends of the argument. -
evidence-and-market.md 2.8 KB
# Evidence and Market Sizing ## Evidence classes Every material claim belongs to one class: | Class | Meaning | How to present | |---|---|---| | Fact | Directly supported by a reliable source | State with source and as-of date | | Inference | Reasoned conclusion from facts | Label as inference and show bridge | | Assumption | Planning input not yet verified | Label and sensitivity-test | | Missing | Necessary evidence not yet available | Keep as a named gap, never fill by intuition | ## Source hierarchy Prefer sources in this order: 1. Product database, payment processor, analytics, contracts, repository history. 2. Direct customer interviews, support conversations, signed pilots, orders. 3. Official government, company, exchange, standards, or research data. 4. Reputable analyst/research reports with disclosed methodology. 5. Quality secondary reporting. 6. Search snippets, social posts, and unsourced aggregations only as leads. Time-sensitive facts must be checked live. Capture the date and exact URL. If a source is inaccessible, say so in the report. ## Evidence ledger format | ID | Claim | Status | Source | As of | Slide | Notes / next action | |---|---|---|---|---|---|---| | E-001 | ... | fact | URL or dashboard export | YYYY-MM-DD | 6 | ... | Use stable IDs in the outline so charts and slide copy can be traced back. ## TAM / SAM / SOM methodology Do not paste a broad “AI will be worth $X trillion” forecast into a deck. Build a bridge from actual buyer to price. ### TAM All plausible buyers × annual value of the complete category. ```text TAM = global buyer count × realistic annual spend per buyer ``` Use a top-down source only as a cross-check. ### SAM The part of TAM reachable by current product scope, geography, regulation, and sales motion. ```text SAM = target buyer count in reachable segments × current annual contract value ``` ### SOM A three-to-five-year operating plan, not a percentage chosen for visual symmetry. ```text SOM = acquired accounts × annual price × expected retention ``` Show the channel capacity or sales capacity that makes acquired accounts credible. ## Scenario model Use at least two scenarios: - conservative: slower conversion, lower price, longer sales cycle; - base: management plan; - upside: only if named leading indicators improve. Never present the upside case as a forecast. Put assumptions next to the chart. ## Metric hygiene - Distinguish downloads, clones, activated users, active users, retained users, and paid users. - Distinguish trial, activation, conversion, renewal, and revenue. - Use cohorts for retention; do not infer retention from cumulative installs. - Define the period, denominator, timezone, duplicates, bots, and internal usage. - Put “as of YYYY-MM-DD” on changing metrics. - When the number is zero, say zero; the honest gap can define the financing thesis. -
investor-story.md 3.1 KB
# Investor Story ## The investor's reading order An investor does not read a BP like a product manual. The sequence is closer to: 1. Can I understand what this is in ten seconds? 2. Is the pain real, frequent, and expensive enough? 3. Is the product response specific and demonstrable? 4. Why can this become large now? 5. What has already been de-risked? 6. How does money enter the system? 7. Why will this team win? 8. What exactly does this financing buy? Every slide should reduce one uncertainty in that order. ## Three layers of positioning ### Layer 1: Product definition State the category or the completed job. It should be repeatable, not poetic. - Chinese: ideally 14–20 characters. - English: ideally 8–12 words. - One subject, one category/job, one clear beneficiary. - Do not lead with architecture, protocols, model names, or number of Agents. Draft three alternatives: 1. **Literal category** — “面向 X 的 Y”。 2. **Comparator** — “X 版的 Y” or “X for Y”. 3. **Category creation** — a new category with an immediate plain-language gloss. Choose the line a non-technical investor can repeat accurately after ten seconds. ### Layer 2: Market wedge Name the first buyer and the urgent use case. A credible wedge is narrower than the vision but large enough to prove demand. ```text Core wedge → adjacent users → long-term market ``` Do not confuse the wedge with the final market, or describe the final market as the current customer base. ### Layer 3: Vision Explain the structural change that makes the company matter. Vision earns its place after the product and wedge are clear. ## Product vs. implementation Ask: “If this mechanism changed tomorrow, would the customer still buy the result?” - If yes, it is implementation and should not define the company. - If no, it may be the category or moat. Examples of implementation-heavy framing: - number of Agents; - local vs. cloud runtime without explaining user benefit; - branch/worktree selection; - model/provider list; - architecture components. Translate them into the user consequence: continuity, control, trust, speed, cost, collaboration, or creative freedom. ## Before / after test | Weak | Better | |---|---| | “We integrate many models and Agents.” | “One workspace keeps AI work controllable from idea to delivery.” | | “Local-first multi-Agent orchestration.” | “Your work, context, and choices stay portable while AI does the execution.” | | “Everyone can command an Agent team.” | “Creators can reliably turn intent into finished digital products.” | The “better” line is still a hypothesis. It must match the actual product and buyer. ## Narrative red flags - The first three slides require a glossary. - The one-liner is a slogan with no product noun or job. - The company is defined by a feature available in every model vendor. - The market slide appears before the buyer is clear. - The deck claims “no competitors” or makes strong competitors look foolish. - Vision, TAM, and product roadmap describe three different businesses. - The financing ask does not connect to the key risks still unproven. -
user-config.md 2.3 KB
# User Configuration This skill follows the portable agent skill profile contract. It must not assume a private workspace, personal absolute paths, or private brand assets. ## Resolution Order 1. Explicit CLI flags. 2. Environment variables. 3. Shared profile JSON. 4. Safe defaults such as the current working directory or `$HOME/Documents`. 5. Ask the user once for missing required fields. ## Shared Profile Default profile path: ```bash ${SKILL_PROFILE_PATH:-$HOME/.skill-publisher/skills/profile.json} ``` Example: ```json { "user": { "name": "Your Name", "language": "zh-CN", "timezone": "Asia/Shanghai" }, "workspace": { "root": "$HOME/projects", "output_dir": "$HOME/Documents/lov-skill-output" }, "brand": { "name": "Your Brand", "site": "https://example.com", "profile": "$HOME/.skill-publisher/skills/brand.json", "design_guide": "$HOME/.skill-publisher/skills/design-guide.md" } } ``` Environment variable overrides: | Variable | Meaning | |----------|---------| | `SKILL_PROFILE_PATH` | Path to the shared profile JSON | | `SKILLS_CONFIG_DIR` | Shared Skill Publisher skills config/data directory | | `SKILL_WORKSPACE_ROOT` | User workspace root | | `SKILL_OUTPUT_DIR` | Default generated output directory | | `SKILL_PROFILE_PATH` | Brand profile JSON or Markdown | | `SKILL_DESIGN_GUIDE` | Design guide path | BP-specific overrides take precedence over shared values: | Variable | Meaning | |----------|---------| | `SKILL_BP_OUTPUT_DIR` | Default output directory for BP workspaces | | `SKILL_BP_BRAND_PROFILE` | Brand profile used by the deck | | `SKILL_BP_DESIGN_GUIDE` | Visual design guide used by the deck | If none are set, use an explicit `--output` path or a project-local `business-plan/` directory. Never assume an author's private workspace. ## Implementation Notes - Store source descriptions in `evidence-ledger.md`; do not copy secrets into the BP workspace. - Prefer relative paths inside the workspace so it can be moved or shared. - Brand files remain user-owned inputs. The public Yoda assets are an example, not a default theme. - Scripts should accept explicit paths via CLI flags. - Missing profile fields should produce actionable errors. - Skill Publisher maintainer defaults belong in an optional profile, not in the workflow.
-
-
scripts
-
init_bp.py 6.2 KB
#!/usr/bin/env python3 """Create a portable investor-BP workspace without overwriting existing work.""" from __future__ import annotations import argparse import datetime as dt import json import os import re import sys from pathlib import Path from typing import Any, Dict, Optional def expand_path(value: str) -> Path: return Path(os.path.expandvars(os.path.expanduser(value))).resolve() def slugify(value: str) -> str: normalized = re.sub(r"[^\w\u4e00-\u9fff]+", "-", value.strip().lower(), flags=re.UNICODE) return normalized.strip("-_") or "project" def load_profile(path: Path) -> Dict[str, Any]: if not path.exists(): return {} try: data = json.loads(path.read_text(encoding="utf-8")) except (OSError, json.JSONDecodeError) as exc: raise SystemExit(f"Cannot read profile {path}: {exc}") from exc if not isinstance(data, dict): raise SystemExit(f"Profile must be a JSON object: {path}") return data def nested(data: Dict[str, Any], *keys: str) -> Optional[str]: current: Any = data for key in keys: if not isinstance(current, dict): return None current = current.get(key) return current if isinstance(current, str) and current.strip() else None def resolve_output(args: argparse.Namespace, profile: Dict[str, Any]) -> Path: if args.output: return expand_path(args.output) skill_output = os.environ.get("SKILL_BP_OUTPUT_DIR") if skill_output: return expand_path(skill_output) / f"{slugify(args.name)}-business-plan" shared_output = os.environ.get("SKILL_OUTPUT_DIR") if shared_output: return expand_path(shared_output) / f"{slugify(args.name)}-business-plan" profile_output = nested(profile, "workspace", "output_dir") if profile_output: return expand_path(profile_output) / f"{slugify(args.name)}-business-plan" return (Path.cwd() / "business-plan").resolve() def resolve_optional(explicit: Optional[str], env_name: str, profile: Dict[str, Any], key: str) -> str: value = explicit or os.environ.get(env_name) or nested(profile, "brand", key) return str(expand_path(value)) if value else "not configured" def render_template(template: Path, destination: Path, values: Dict[str, str]) -> None: text = template.read_text(encoding="utf-8") for key, value in values.items(): text = text.replace("{{" + key + "}}", value) destination.write_text(text, encoding="utf-8") def ensure_safe_destination(output: Path) -> None: home = Path.home().resolve() if output in {Path("/").resolve(), home}: raise SystemExit(f"Refusing to use broad destination: {output}") if output.exists() and any(output.iterdir()): raise SystemExit( f"Destination already contains files: {output}\n" "Continue in that workspace manually or choose a new --output path." ) def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser( description="Create a source-backed 12–15 slide investor-BP workspace." ) parser.add_argument("--name", required=True, help="Project or company name") parser.add_argument( "--stage", default="seed", choices=("pre-seed", "seed", "angel", "pre-a", "series-a", "growth", "other"), help="Financing stage (default: seed)", ) parser.add_argument("--output", help="Exact workspace directory") parser.add_argument("--profile", help="Shared Skill Publisher skills profile JSON") parser.add_argument("--brand-profile", help="Brand profile file") parser.add_argument("--design-guide", help="Design guide file") parser.add_argument("--json", action="store_true", help="Print machine-readable result") return parser.parse_args() def main() -> int: args = parse_args() profile_path = expand_path( args.profile or os.environ.get("SKILL_PROFILE_PATH") or "$HOME/.skill-publisher/skills/profile.json" ) profile = load_profile(profile_path) output = resolve_output(args, profile) ensure_safe_destination(output) skill_root = Path(__file__).resolve().parent.parent template_root = skill_root / "assets" / "templates" required_templates = { "brief.md": template_root / "brief.md", "evidence-ledger.md": template_root / "evidence-ledger.md", "outline.md": template_root / "outline.md", } missing = [str(path) for path in required_templates.values() if not path.exists()] if missing: raise SystemExit("Missing templates:\n- " + "\n- ".join(missing)) output.mkdir(parents=True, exist_ok=True) (output / "assets").mkdir(exist_ok=True) (output / "assets" / ".gitkeep").touch() today = dt.date.today().isoformat() values = { "PROJECT_NAME": args.name.strip(), "STAGE": args.stage, "DATE": today, "VERSION": "draft-0.1", } created = [] for relative, template in required_templates.items(): destination = output / relative render_template(template, destination, values) created.append(str(destination)) brand_profile = resolve_optional( args.brand_profile, "SKILL_BP_BRAND_PROFILE", profile, "profile" ) design_guide = resolve_optional( args.design_guide, "SKILL_BP_DESIGN_GUIDE", profile, "design_guide" ) source_note = output / "source-config.md" source_note.write_text( "# BP Source Configuration\n\n" f"- Project: {args.name.strip()}\n" f"- Stage: {args.stage}\n" f"- Created: {today}\n" f"- Brand profile: {brand_profile}\n" f"- Design guide: {design_guide}\n\n" "Do not store credentials or private customer data in this file.\n", encoding="utf-8", ) created.append(str(source_note)) result = { "project": args.name.strip(), "stage": args.stage, "workspace": str(output), "created": created, } if args.json: print(json.dumps(result, ensure_ascii=False, indent=2)) else: print(f"Created investor-BP workspace: {output}") for path in created: print(f" - {path}") print("Next: replace missing/TODO items, pass the evidence gate, then use bp-deck.") return 0 if __name__ == "__main__": sys.exit(main())
-
-
CHANGELOG.md 317 B
# Changelog All notable changes to this skill are documented here. Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · Versioning: [SemVer](https://semver.org/) ## [0.2.0] - 2026-08-24 ### Added - add the shared feedback-classification and approval-invalidation gate used by every LovStudio Skill -
README.md 557 B
# BP 蓝图 · BP Blueprint  把项目资料整理成投资人能看懂的产品定义、证据账本和 12–15 页 BP 大纲。 ## 安装 ```bash npx skills add bp-outline -g -y ``` ## 使用 ```text $lov-bp-outline 根据当前仓库和用户访谈写 BP 大纲 $lov-bp-outline 重写这份大纲,先不要做 PPT ``` ## 交付物 - `brief.md` - `evidence-ledger.md` - `outline.md` - 待补证据清单 大纲确认后,可交给 `lov-bp-deck` 继续制作 PPT。 ## License MIT -
SKILL.md 5.7 KB
--- name: lov-bp-outline description: > Turn existing project materials into a source-backed investor BP brief, evidence ledger, and 12–15 slide outline. Use before making slides, when the product positioning is unclear, or when an existing outline is too technical, generic, or unsupported. Trigger on "写 BP 大纲", "融资叙事", "梳理商业计划书", "先不要做 PPT", "BP outline", "investor narrative", or "pitch deck outline". license: MIT metadata: author: contributors version: "0.2.0" tags: business-plan outline investor narrative evidence market positioning --- # BP 蓝图 · BP Blueprint Build the investment story before choosing a visual style. This skill stops at an approved, source-backed outline and does not generate PPTX/PDF. ## Input Any combination of: - repository, product docs, PRD, website, prior applications, or existing BP; - analytics exports, payment/usage data, GitHub evidence, and customer notes; - product screenshots, founder profile, team history, brand assets; - financing stage, amount, equity/instrument, and milestones. ## Output Contract ```text business-plan/ ├── brief.md ├── evidence-ledger.md ├── outline.md └── assets/ ``` The output is ready for `lov-bp-deck` only when the evidence gate passes. ## Workflow (MANDATORY) ### Step 0: Resolve the skill and workspace Resolve this `SKILL.md` directory as `SKILL_DIR`. If the user already has a `business-plan/` workspace, continue in it. Otherwise initialize one: ```bash python3 "$SKILL_DIR/scripts/init_bp.py" \ --name "Project Name" \ --stage seed \ --output ./business-plan ``` Read `references/user-config.md` for portable path and brand resolution. ### Step 1: Inspect before asking Search the user's supplied scope first. Prefer exact repo/files/URLs over broad discovery. Extract known audience, financing stage, ask, product, buyer, traction, business model, market, competition, growth, and team evidence. Ask at most one compact round of questions for missing decisions that materially change the outline. If the user says “不要问”“按推荐方案”, assume seed investors, 12–15 slides, 8–10 minutes, and mark the financing ask as a visible gap if unknown. ### Step 2: Build the evidence ledger Record every material claim as: - fact; - inference; - assumption; - missing. Include source, as-of date, slide destination, and next action. For changing claims, verify current authoritative sources. Never substitute a broad AI forecast for a buyer-linked market calculation. Read `references/evidence-and-market.md`. ### Step 3: Define the investor-readable product Before the vision, draft three one-line definitions: 1. literal category; 2. accurate comparator (“X for Y”); 3. category-creation language with a plain-language explanation. Choose the line a non-technical investor can repeat after ten seconds. Separate: ```text early wedge → adjacent users → long-term market ``` Treat technical modes as implementation unless the buyer actually pays for the mechanism. Read `references/investor-story.md`. ### Step 4: Write the 12–15 page argument Use this 12-page base: 1. one sentence: who you are; 2. concrete user problem; 3. how the product solves it; 4. product demo or core experience; 5. why now; 6. real validation; 7. business model; 8. market size and wedge; 9. competition and differentiation; 10. growth plan; 11. why this team; 12. financing ask, use, and next proof. Expand only when a product demo, moat, B2B deployment model, or financial model needs a dedicated page. Read `references/deck-architecture.md`. Each slide entry must contain: - conclusion headline; - investor takeaway; - evidence IDs and sources; - exact visual/chart proof; - speaker purpose; - unresolved gap or “none”. ### Step 5: Run the evidence gate The outline is ready only when: - all 12 investor questions are covered; - the product definition is investor-readable; - every core number traces to evidence or a labeled assumption; - traction stages and denominators are not mixed; - TAM/SAM/SOM has a buyer-price-reachability bridge; - the financing ask connects to 18–24 month validation milestones; - no placeholder is hidden as final copy. Report the page map and at most five evidence gaps. Do not start slide generation unless the user asked for a complete BP or explicitly continues with `bp-deck`. ## Recommended Next Step ```text $lov-bp-deck ./business-plan/outline.md ``` ## Runtime context (shared) 运行前读取本 Skill 包的 `skill.yaml`,由宿主提供 `skill-runtime/v1` 上下文。字段解析顺序为:当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。 - 只使用 Manifest 声明的字段;Profile 保存公开品牌事实,Preferences 保存个人工作偏好。 - `required: true` 字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题;用户明确同意后再保存回答。 - 报错提供可复制的 `context_id`、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。 ## 通用反馈闭环 用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行: 1. 先判断意见是 `task-specific`(仅本次)还是 `reusable`(可跨任务复用)。 2. `task-specific` 只修改当前任务,不改 Skill。 3. `reusable` 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。 4. 完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。 5. `reusable` 修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.