用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/allenporter/supernote --skill project-development命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | project_development |
| description | Use standardized scripts to manage the project environment, testing, and linting. |
This skill teaches you how to interact with the Supernote codebase using standardized scripts, following the "Scripts to Rule Them All" pattern.
| Script | When to use |
|---|---|
script/bootstrap | After cloning or when dependencies change. |
script/test | Before submitting changes or to verify functionality. |
script/lint | Before committing to ensure code style and quality. |
script/server | When you need a running server for integration testing or manual verification. |
script/db_revision | To generate a database migration revision. |
./script/bootstrap./script/db_revision "..."../script/lint to check for style issues../script/test to run the test suite../script/server to run an ephemeral server for manual checks.script/ directory at the project root.uv if it is installed, otherwise they will fall back to standard Python tools.To visually inspect and verify Web UI components rendered in a headless browser:
Ensure OS shared libraries and Python Playwright package are installed:
apt-get install -y libgbm1 libasound2 libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libpango-1.0-0 libcairo2
uv pip install playwright
uv run playwright install chromium
Run ./script/server as a background task (WaitMsBeforeAsync: 3000). This starts the local server at http://127.0.0.1:8080 with default user debug@example.com / password.
Execute Playwright script via run_command:
import asyncio
from playwright.async_api import async_playwright
async def run():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page(viewport={"width": 1280, "height": 800})
await page.goto("http://127.0.0.1:8080")
await page.wait_for_timeout(1000)
await page.fill("input[type=email]", "debug@example.com")
await page.fill("input[type=password]", "password")
await page.click("button[type=submit]")
await page.wait_for_timeout(2000)
screenshot_path = "<artifacts_dir>/ui_screenshot.png"
await page.screenshot(path=screenshot_path)
await browser.close()
asyncio.run(run())
Call view_file on the .png filepath to visually inspect and verify the rendered interface.