Not in the top 1,000 by GitHub stars

beautfulmt/PM-K12--skills

产品经理从需求调研分析到 PRD、交互原型、功能验收与数据分析的完整工作流 Skill

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 9ffaeec62a55

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 9ffaeec62a55d50dc26aca8308d9aac67e237501

159GitHub stars
8stars in 7 days
1skill in this repository
0commits in 30 days

Heat

5.3
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026159

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

edu-pm-workflow

When your agent uses it

Product management workflow for producing PRDs, interactive HTML prototypes, flowcharts, acceptance checklists, demand analysis, and data reports. Use when the user describes a product requirement, asks for PRD/prototype/flowchart/checklist/data-analysis output, or wants to continue this PM workflow.

What it loads into context

Frontmatter

75 tokens

Always available to the agent

SKILL.md

4,393 tokens

When the skill is activated

Reference documents

67,784 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. First Decision
  2. Workflow Routing
  3. PRD Workflow Rules
  4. Optional Pencil Path
  5. Output Structure
  6. Customization

Scripts executed separately

  • assets/scripts/install_launcher.sh
  • assets/scripts/pm_bootstrap.py
  • assets/scripts/pm_launchagent.py
  • assets/scripts/pm_runtime.py
  • assets/scripts/prototype-export-client.js
  • assets/scripts/prototype_launcher.py
  • assets/scripts/prototype_server.py
  • assets/scripts/start_service.py
  • assets/scripts/validate_prd.py
  • assets/scripts/启动原型导出服务.bat
  • assets/scripts/启动原型导出服务.command
  • scripts/init.bat
  • scripts/init.sh
  • scripts/initialize.py

Files

  • .gitattributesasset811 bytes
  • .gitignoreasset29 bytes
  • README.mddoc14,362 bytes
  • SKILL.mdcore18,559 bytes
  • SKILL.mdcore18,559 bytes
  • SKILL.mdcore18,559 bytes
  • SKILL.mdcore18,559 bytes
  • SKILL.mdcore18,559 bytes
  • SKILL.mdcore18,559 bytes
  • assets/config/mcp.json.exampleasset189 bytes
  • assets/scripts/install_launcher.shruns2,417 bytes
  • assets/scripts/pm_bootstrap.pyruns21,249 bytes
  • assets/scripts/pm_launchagent.pyruns7,866 bytes
  • assets/scripts/pm_runtime.pyruns7,707 bytes
  • assets/scripts/prototype-export-client.jsruns12,260 bytes
  • assets/scripts/prototype_launcher.pyruns7,118 bytes
  • assets/scripts/prototype_server.pyruns55,437 bytes
  • assets/scripts/start_service.pyruns3,510 bytes
  • assets/scripts/validate_prd.pyruns11,240 bytes
  • assets/scripts/启动原型导出服务.batruns1,714 bytes
  • assets/scripts/启动原型导出服务.commandruns1,111 bytes
  • assets/templates/pencil-draw-prompt.mddoc4,535 bytes
  • assets/templates/prd-content.htmlasset7,224 bytes
  • assets/templates/关键点.mddoc42,669 bytes
  • assets/workflows/edu-pm-acceptance.mddoc3,232 bytes
  • assets/workflows/edu-pm-data-analysis.mddoc3,222 bytes
  • assets/workflows/edu-pm-demand.mddoc3,109 bytes
  • assets/workflows/edu-pm-prd.mddoc159,670 bytes
  • scripts/init.batruns1,382 bytes
  • scripts/init.shruns1,162 bytes
  • scripts/initialize.pyruns14,048 bytes
  • scripts/known_hashes.jsonasset6,659 bytes

No excerpt is shown for this license. Read the source on GitHub.

View the complete source on GitHub

Skills included

  • edu-pm-workflow

Repository facts

License
No license detected
Created
Apr 12, 2026
Last pushed
Sep 13, 2026
Forks
31
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 5 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 96 signals by file

README.md

  • Network accessline 57
    没装 Python 的话,入口脚本会停在窗口里告诉你去 <https://www.python.org/downloads/> 装 3.9+(Windows 安装时务必勾选 **Add python.exe to PATH**)。

SKILL.md

  • Network accessline 74
    - **Business flowcharts must NOT use Mermaid's default theme** (§4.1). `theme:'default'` produces saturated blocks with white text that clash with the light PRD shell. Use `theme:'base'` with the fixed `themeVariables` block (near-white nod
  • Network accessline 75
    - **Zero text overlap is a hard gate for both diagrams, not a best effort** (§4.3 ②, §4.6 ③④). Fix order when the audit fails: enlarge the canvas → widen gaps → reroute/add rails → split into two canvases. Never fix overlap by shrinking typ
  • Network accessline 76
    - **Anything the PRD does over `http://` must survive an insecure context.** On the intranet `navigator.clipboard`, `ClipboardItem` and `showSaveFilePicker` do not exist: copy paths need an `execCommand` fallback and save degrades to downlo

assets/scripts/install_launcher.sh

  • Executable scriptline 1
    #!/bin/bash
  • Network accessline 29
    done if [ -z "$PY" ]; then   echo "❌ 没找到 python3,请先安装 Python 3.9+(https://www.python.org/downloads/)"
  • Network accessline 30
    if [ -z "$PY" ]; then   echo "❌ 没找到 python3,请先安装 Python 3.9+(https://www.python.org/downloads/)"   exit 1
  • Network accessline 31
    echo "❌ 没找到 python3,请先安装 Python 3.9+(https://www.python.org/downloads/)"

assets/scripts/pm_bootstrap.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 55
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 140
    [Credential-related source omitted]
  • Network accessline 234
    raise RuntimeError(                 "找不到可用的 Python 3.9+。\n"                 "  macOS:从 https://www.python.org/downloads/ 安装,或执行 brew install python\n"
  • Network accessline 235
    "找不到可用的 Python 3.9+。\n"                 "  macOS:从 https://www.python.org/downloads/ 安装,或执行 brew install python\n"                 "  Windows:在应用商店或 https://www.python.org/downloads/ 安装,"
  • Network accessline 236
    "  macOS:从 https://www.python.org/downloads/ 安装,或执行 brew install python\n"
  • Network accessline 237
    "  Windows:在应用商店或 https://www.python.org/downloads/ 安装,"
  • Network accessline 256
    raise RuntimeError(                 "安装 playwright 失败。若公司网络需要代理,请先设置后重试:\n"                 "  macOS:export HTTPS_PROXY=http://代理地址:端口\n"
  • Network accessline 257
    "安装 playwright 失败。若公司网络需要代理,请先设置后重试:\n"                 "  macOS:export HTTPS_PROXY=http://代理地址:端口\n"                 "  Windows:set HTTPS_PROXY=http://代理地址:端口")
  • Network accessline 258
    "  macOS:export HTTPS_PROXY=http://代理地址:端口\n"
  • Network accessline 259
    "  Windows:set HTTPS_PROXY=http://代理地址:端口")
  • Network accessline 299
    import socket     for _ in range(attempts):         with socket.socket() as probe:
  • Network accessline 300
    for _ in range(attempts):         with socket.socket() as probe:             probe.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  • Network accessline 301
    with socket.socket() as probe:
  • Network accessline 327
    raise RuntimeError("已有服务的读写模式与本次请求不一致,请先停止它")         if verbose:             print(f"  ✅ 当前项目服务已在运行:http://127.0.0.1:{config['port']}")
  • Network accessline 328
    if verbose:             print(f"  ✅ 当前项目服务已在运行:http://127.0.0.1:{config['port']}")         return "already-running", config
  • Network accessline 329
    print(f"  ✅ 当前项目服务已在运行:http://127.0.0.1:{config['port']}")
  • Network accessline 415
    for key, label in (("port", "服务端口"), ("launcher_port", "启动器端口")):         port = int(config[key])         with socket.socket() as probe:
  • Network accessline 416
    port = int(config[key])         with socket.socket() as probe:             probe.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  • Network accessline 417
    with socket.socket() as probe:
  • Access to secretsline 472
    [Credential-related source omitted]

assets/scripts/pm_launchagent.py

  • Executable scriptline 1
    #!/usr/bin/env python3

assets/scripts/pm_runtime.py

  • Executable scriptline 1
    Executable file
  • Network accessline 60
    [Credential-related source omitted]
  • Network accessline 61
    [Credential-related source omitted]
  • Network accessline 62
    "server": "http://127.0.0.1:" + str(config["port"]),
  • Network accessline 63
    "launcher": "http://127.0.0.1:" + str(config["launcher_port"]),
  • Network accessline 157
    try:         with local_opener().open(f"http://127.0.0.1:{port}/api/health", timeout=timeout) as response:
  • Network accessline 158
    with local_opener().open(f"http://127.0.0.1:{port}/api/health", timeout=timeout) as response:
  • Network accessline 169
    None,         "null",         "http://127.0.0.1",
  • Network accessline 170
    "null",         "http://127.0.0.1",         "http://localhost",
  • Network accessline 171
    "http://127.0.0.1",
  • Network accessline 172
    "http://localhost",
  • Network accessline 173
    "http://127.0.0.1:" + str(port),
  • Network accessline 174
    "http://localhost:" + str(port),
  • Network accessline 181
    if origin in ("http://127.0.0.1", "http://localhost"):

assets/scripts/prototype-export-client.js

  • Executable scriptline 1
    Executable file
  • Network accessline 76
    const timer = setTimeout(() => controller.abort(), 120000);     try {       const response = await fetch(url, {
  • Network accessline 77
    try {       const response = await fetch(url, {         method: payload === undefined ? 'GET' : 'POST',
  • Network accessline 78
    const response = await fetch(url, {
  • Network accessline 97
    async function health() {     const response = await fetch(server + '/api/health', {
  • Network accessline 98
    const response = await fetch(server + '/api/health', {

assets/scripts/prototype_launcher.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 34
    [Credential-related source omitted]
  • Network accessline 58
    origin = self.headers.get("Origin")         return origin_allowed(origin, config["launcher_port"]) or origin in (             f"http://127.0.0.1:{config['port']}", f"http://localhost:{config['port']}")
  • Network accessline 60
    f"http://127.0.0.1:{config['port']}", f"http://localhost:{config['port']}")
  • Network accessline 135
    self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, fileno=os.dup(fd))

assets/scripts/prototype_server.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Access to secretsline 50
    [Credential-related source omitted]
  • Network accessline 56
    SERVER_URL = f"http://127.0.0.1:{PORT}"
  • Network accessline 1298
    CONFIG = reroll_ports(PROJECT_DIR, CONFIG)             PORT = int(CONFIG["port"])             SERVER_URL = f"http://127.0.0.1:{PORT}"
  • Network accessline 1300
    SERVER_URL = f"http://127.0.0.1:{PORT}"
  • Access to secretsline 1325
    [Credential-related source omitted]
  • Network accessline 1344
    pass     except _AlreadyRunning as error:         print(f"  ✅ 本项目的导出服务已在运行:http://127.0.0.1:{error}")
  • Network accessline 1346
    print(f"  ✅ 本项目的导出服务已在运行:http://127.0.0.1:{error}")

assets/scripts/start_service.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 66
    open_browser=args.open_browser, allow_download=not args.no_download)     if args.background and result == "launched":         print(f"✅ 服务已在后台启动:http://127.0.0.1:{config['port']}")
  • Network accessline 67
    if args.background and result == "launched":         print(f"✅ 服务已在后台启动:http://127.0.0.1:{config['port']}")     return result if isinstance(result, int) else 0
  • Network accessline 68
    print(f"✅ 服务已在后台启动:http://127.0.0.1:{config['port']}")
  • Access to secretsline 80
    [Credential-related source omitted]

assets/scripts/validate_prd.py

  • Executable scriptline 1
    #!/usr/bin/env python3

assets/scripts/启动原型导出服务.bat

  • Executable scriptline 1
    Executable file
  • Network accessline 41
    echo Python 3.9 or newer was not found. echo. echo   1. Install it from https://www.python.org/downloads/
  • Network accessline 42
    echo. echo   1. Install it from https://www.python.org/downloads/ echo   2. During setup, CHECK the box "Add python.exe to PATH"
  • Network accessline 43
    echo   1. Install it from https://www.python.org/downloads/

assets/scripts/启动原型导出服务.command

  • Executable scriptline 1
    #!/bin/bash
  • Network accessline 25
    echo "" echo "请安装 Python 3.9 以上版本,二选一:" echo "  1. 打开 https://www.python.org/downloads/ 下载安装包"
  • Network accessline 26
    echo "请安装 Python 3.9 以上版本,二选一:" echo "  1. 打开 https://www.python.org/downloads/ 下载安装包" echo "  2. 已装 Homebrew 的话,在终端执行:brew install python"
  • Network accessline 27
    echo "  1. 打开 https://www.python.org/downloads/ 下载安装包"

assets/workflows/edu-pm-prd.md

  • Network accessline 1088
    PRD HTML 会被推到公司内网供多人浏览。内网是 `http://` 非 localhost,属**不安全上下文**——`navigator.clipboard`、`ClipboardItem`、`showSaveFilePicker` 一律不存在。不要按"我本机点着好使"就当功能可用。
  • Network accessline 1090
    | 能力 | 作者本机(`file://`) | 内网访客(`http://` 非 localhost) |
  • Network accessline 1617
    if(window.exportPrototypeViaServer){ try{ await window.exportPrototypeViaServer(btn); return; }catch(e){ console.warn('服务导出失败,降级',e); } }   try{     const {toBlob}=await import('https://cdn.jsdelivr.net/npm/html-to-image@1.11.11/+esm');
  • Network accessline 1618
    try{     const {toBlob}=await import('https://cdn.jsdelivr.net/npm/html-to-image@1.11.11/+esm');     const node=document.querySelector('.chart-container'), s=2;
  • Network accessline 1619
    const {toBlob}=await import('https://cdn.jsdelivr.net/npm/html-to-image@1.11.11/+esm');

scripts/init.bat

  • Executable scriptline 1
    Executable file
  • Network accessline 39
    echo Python 3.9 or newer was not found. echo. echo   1. Install it from https://www.python.org/downloads/
  • Network accessline 40
    echo. echo   1. Install it from https://www.python.org/downloads/ echo   2. During setup, CHECK the box "Add python.exe to PATH"
  • Network accessline 41
    echo   1. Install it from https://www.python.org/downloads/

scripts/init.sh

  • Executable scriptline 1
    #!/bin/bash
  • Network accessline 23
    echo "" >&2 echo "请二选一安装后重试:" >&2 echo "  1. 打开 https://www.python.org/downloads/ 下载安装包" >&2
  • Network accessline 24
    echo "请二选一安装后重试:" >&2 echo "  1. 打开 https://www.python.org/downloads/ 下载安装包" >&2 echo "  2. 已装 Homebrew 的话,执行:brew install python" >&2
  • Network accessline 25
    echo "  1. 打开 https://www.python.org/downloads/ 下载安装包" >&2

scripts/initialize.py

  • Executable scriptline 1
    #!/usr/bin/env python3

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Signal confidence: 96 facts

and 46 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeFrontmatter field user-invocable in SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.