DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A prompt library you clone and run locally: a curated public library to browse, plus your own prompts as markdown files you own. Includes an MCP server.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗📚 Two Libraries
site/library/📝 Your Prompts Are Files
MY_LIBRARY_DIR at a synced or git folder and your library is backed up📦 Skill Packs
🔌 MCP Servers
mcpServers client🤖 Use It From An Agent
🎨 Modern UI
🔒 Nothing To Sign Up For
.env required127.0.0.1 onlyThe app lives in site/. Run every npm command from there: the repo root has no package.json.
git clone https://github.com/ai-automation-tools/promptbook.git
cd promptbook/site
npm install
npm run dev # or: npm start (build once, then serve)
Open http://localhost:3010. Your prompts are saved to site/my-library/ (gitignored).
Copy site/.env.example to site/.env to change a default:
| Variable | Default | What it does |
|---|---|---|
MY_LIBRARY_DIR | my-library | Where My Library is kept. Relative to site/, or absolute. |
HOST | 127.0.0.1 | Address to listen on. There are no accounts, so read this before opening it up. |
READ_ONLY | false | true serves the Public Library only (My Library is neither listed nor served) and refuses every write. |
ALLOWED_HOSTS | (none) | Extra hostnames the server answers to, comma-separated, for a proxy such as tailscale serve. Any other name gets 403, which blocks DNS rebinding. See this. |
npm run lint # tsc --noEmit
npm run test:routes # the API route table is intact
npm run test:my-library # the My Library file store
npm run test:read-only # read-only mode hides My Library
npm run test:prompt-content # a failed prompt load never falls back to the preview
npm run test:markdown-file # a downloaded .md reads back unchanged
npm run test:preview # badge rows do not become the card blurb
npm run test:mcp # the MCP server, end to end over stdio
npm run test:safe-path # ../ escapes and links out of library/ are refused
npm run test:browser # after npm run build: the built app in Chrome (needs Chrome installed)
npm run build:index # rebuild api/prompt-index.json after editing library/
npm run bench # latency and event-loop stall of the heavy endpoints (not a test)
node scripts/upstream.test.mjs # provenance frontmatter (run from the repo root)
node scripts/skill-frontmatter.test.mjs # Agent Skills spec compliance
CI runs all of these on every PR and fails if the committed prompt index is stale.
The repo ships an MCP server (site/mcp/server.ts) that reads the same folders as the app.
Nothing else needs to be running. After npm install in site/, add it to your agent:
# Claude Code (use the absolute path to your clone)
claude mcp add promptbook -- npm --prefix /path/to/promptbook/site run --silent mcp
Any other MCP client, as an mcpServers entry:
{
"mcpServers": {
"promptbook": {
"command": "npm",
"args": ["--prefix", "/path/to/promptbook/site", "run", "--silent", "mcp"]
}
}
}
| Tool | Does |
|---|---|
search_library | Search every section and My Library by words, section, category or tags |
get_item | The full markdown of one item |
list_sections, list_categories | What is in the library, with counts |
get_skill, get_skill_file | A skill's SKILL.md and its support files |
list_skill_packs, get_skill_pack | The Skill Packs and the skills in each |
save_to_my_library, update_my_prompt, update_from_public, delete_my_prompt | Write to My Library (not offered when READ_ONLY=true) |
It also offers MCP prompts: library_prompt takes any library id, and every featured prompt
and every My Library prompt is listed by name, so clients show them as slash commands. It
honours MY_LIBRARY_DIR and READ_ONLY from site/.env. Setup for each client:
docs/mcp-server.md. How it works: docs/features/MCP-SERVER.md.
📚 Complete Documentation - Full documentation index
Getting Started
Creating Content
Features
Development
Frontend:
Backend:
tsxHosting:
promptbook/
├── site/ # The app (run npm here; Vercel Root Directory = site)
│ ├── api/ # API handlers (one Express app, also run by Vercel)
│ ├── lib/ # library.ts (shared reader), my-library.ts (file store), safe-path.ts
│ ├── mcp/ # The MCP server (npm run mcp)
│ ├── src/ # React application
│ │ ├── App.tsx # Main React component
│ │ ├── components/ # UI components
│ │ ├── lib/mode.ts # Read-only flag for the UI
│ │ └── main.tsx # Entry point
│ ├── library/ # Public prompt templates (numbered)
│ │ ├── 1_Guides/
│ │ ├── 2_Agents/
│ │ ├── 3_Skills/
│ │ ├── 4_Prompts/
│ │ ├── 5_System_Prompts/
│ │ └── 6_MCP_Servers/
│ ├── my-library/ # Your prompts (gitignored, created on first save)
│ ├── scripts/ # build-prompt-index.js, the API, MCP and browser tests, the benchmark
│ └── server.ts # Local server around the same app api/ exports (port 3010)
├── homepage/ # Static project homepage (GitHub Pages)
├── .github/workflows/ci.yml # lint + route, store and MCP tests + provenance checks + index freshness
├── .gitattributes # LF everywhere, in the repo and the working tree
├── LICENSE, NOTICE # Apache 2.0 for the app; vendored content keeps its own
├── SECURITY.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md
├── docs/ # Project documentation (DISCOVERY.md is the repo-intake ledger)
├── scripts/ # Library tooling: provenance, skills sync, skill packs, discovery, link check
└── README.md
Each prompt is one file, named <slug-of-title>-<6 hex>.md:
---
title: Code review checklist
section: 4_Prompts
category: Coding
tags:
- review
created: '2026-10-21T14:02:11.000Z'
updated: '2026-10-21T14:02:11.000Z'
---
Review this diff for...
Edit them by hand if you like; the app re-reads the folder on every load. Skill packs you add
are ordinary files tagged skill-pack:<packId>. Details in the Setup Guide.
GET /api/prompts?library=public|my - List prompts (add &lightweight=true for metadata only —
no body text at all for the public library)POST /api/prompts/previews - Card blurbs for a batch of ids ({ ids: string[] }, 200 max)GET /api/prompts/:id - One prompt with its full bodyPOST /api/prompts - Create a My Library promptPUT /api/prompts/:id - Update a My Library promptDELETE /api/prompts/:id - Delete a My Library promptPOST /api/prompts/:path/copy-to-my-prompts - Copy a public prompt to My LibraryGET /api/skill-packs?library=public|my - List packs by modeGET /api/skill-packs/:packId - Pack detailsPOST /api/skill-packs/:packId/add-to-library - Add pack to My Library (confirm)DELETE /api/skill-packs/:packId/remove-from-library - Remove pack from My Library (confirm)GET /api/skill-packs/:packId/download - Download pack ZIPGET /api/skills/download/:skillPath - Download a skill directory as a ZIPEvery route that writes returns 403 in read-only mode. See docs/features/API.md for detailed documentation.
This is a personal project, but suggestions and feedback are welcome!
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)The application code is licensed under the Apache License 2.0.
Content under site/library/ is a mix of original work and vendored third-party skills and prompts. Vendored skills keep their own LICENSE file and an upstream: frontmatter block naming the source; see NOTICE and docs/UPSTREAMS.md. Those files are governed by their own licenses, not by this repository's.
Built with ❤️ by Michael Schecht