一键导入
po
Product organization — Plane project management + Outline spec docs. Load for any Plane URL, module, work item, cycle, or Outline doc operation.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Product organization — Plane project management + Outline spec docs. Load for any Plane URL, module, work item, cycle, or Outline doc operation.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | po |
| description | Product organization — Plane project management + Outline spec docs. Load for any Plane URL, module, work item, cycle, or Outline doc operation. |
Constants, conventions, and protocols for Plane MCP (plane-lightcraft), Outline MCP (outline), and local specs.
Load this skill when working with Plane URLs, modules, work items, cycles, or Outline spec docs.
WORKSPACE_SLUG: lightcraft
PROJECT_ID: b1e09911-9cc1-49b8-ad8f-5d55e3dafd16
PROJECT_IDENTIFIER: SPARK
BASE_URL: https://plane.jimbui.dev
| UUID | Name | |
|---|---|---|
| jimbui@lightcraft.pro | 0466b0c4-f202-4b57-b75a-f7bbc1ddb3c7 | Jim LC Bui (default assignee) |
| buihoangphuc919@gmail.com | 34232675-13d1-4b23-b90c-d5abe8bfd83b | JB_ADMIN / API owner |
| eliot@lightcrafttech.com | 4d158390-cf5a-4e9f-8810-01f25835c5b3 | Eliot Mack |
| elijah@lightcraft.pro | 752141dd-0532-4153-8434-3794e1cded19 | Elijah Welch |
| State | UUID |
|---|---|
| Backlog | 6b6a967b-10d3-4306-8d7b-8dcd8a1fa10a |
| Todo | 38e5ecc0-9aa5-4eee-9403-de57dcf78628 |
| In Progress | 0559cdf7-2eec-448e-8200-f5a3a92b18d6 |
| Done | b22a8c9e-5b39-4bba-8426-df73c50d2eba |
| Cancelled | 095c826d-ed61-4651-b4ed-472787f81fc7 |
backlog → planned (/p) → in-progress (/s) → completed (/pp) | paused | cancelled
OUTLINE_BASE_URL: https://outline.jimbui.dev
SPARK_ROOT_DOC_ID: 0e3ffc06-c0b6-47e5-9821-b589d9eb4ec2
SPARK_ROOT_DOC_SLUG: spark-FqVd5fkaAU
COLLECTION_ID: 3f608f3f-1137-4ec7-b1e8-b9ae98f57633 (LightCraft)
Specs live locally in docs/Spark/{path}/spec.md. MCP sync happens only during /pp.
Module name → local path: strip trailing :, split by : , join as directory segments.
Module: "Navigation: Nav Bar:"
Path: docs/Spark/Navigation/Nav Bar/spec.md
Module: "Infrastructure: Cloudflare: R2:"
Path: docs/Spark/Infrastructure/Cloudflare/R2/spec.md
---
module_id: {uuid} # Set by /pp (Plane module UUID)
outline_doc_id: {uuid} # Set by /pp (Outline doc UUID)
module_name: "Scope: Sub-scope:"
version: 1 # Bumped by /p EXTEND
status: planning|completed
---
module_id and outline_doc_id are empty until first /pp publishversion starts at 1, incremented by /p EXTENDstatus: planning during /p, completed after /pp/p (local only) → /s (local only) → /pp (sync gateway) → /p EXTEND (local only) → ...
/p and /s never call MCP — all reads/writes are local/pp is the only command that touches Plane and OutlinePattern: {BASE_URL}/{WORKSPACE_SLUG}/projects/{project_id}/{resource_type}/{resource_id}/
Split path by / → extract project_id, resource type (modules|cycles|work-items), resource UUID.
Naming: "Scope: Sub-scope:" — trailing colon required. Examples: SSO:, Spark Shot: Timeline:
Creation by /pp: name (convention above), start_date: spec created date, lead: default assignee UUID, status: "completed", description: outline_doc_id: {UUID}
Dates: /pp sets both start_date (from spec) and target_date (publish date).
Warning: update_module rejects members field (HTTP 400) — use lead only.
Naming: Version-prefixed phases.
"Scope: {ver}.{phase} - {Name}" (e.g., "Nav Bar: 1.A - Branding & Layout")"Scope: {ver}.{phase} - {Name}: {Task}" (e.g., "Nav Bar: 1.A - Branding & Layout: Replace logo")Where Scope = last segment of module name (e.g., "Nav Bar" from "Navigation: Nav Bar:").
Phase naming in specs:
### Phase {ver}.{letter}: {Name}
- [ ] {ver}.{letter}.{number} - {Task}
Creation by /pp: All items created in Done state (implementation already complete). start_date: spec created date, target_date: publish date.
Must add to module via add_work_items_to_module AND cycle via add_work_items_to_cycle.
ID format in specs: SPARK-N (uuid) — appended after creation, archived in version sub-docs.
State transitions (/s): Start → In Progress + start_date today. Complete → Done + target_date today. Move ALL phase sub-items at once.
Naming: "YYYY/WW" (ISO week). Range: Sunday 00:00:01 UTC → Saturday 23:59:00 UTC.
Auto-creation: Calculate current week → check existing cycles → create if missing with owned_by (not lead), end_date (not target_date). Cycle dates cannot be in the past.
Primary spec storage is local (docs/Spark/). Outline holds the published foundation and version sub-docs.
Module name segments map to nested Outline docs under Spark root:
Module: "Spark Shot: Nav Bar:"
Spark (root) → Spark Shot (intermediate) → Nav Bar (leaf — foundation here)
Spark root doc has a registry table between <!-- doc-registry --> markers:
| Scope | Doc ID |
|---|---|
| Spark Shot | abc-123 |
| Spark Shot: Nav Bar | def-456 |
On creation (/pp): Split module name by : → check registry for each segment → create missing docs with correct parentDocumentId → add entries to registry.
On lookup: Read Spark root → parse registry → get doc ID. Never use search_documents for hierarchy resolution.
Created by /pp as children of the spec doc on Outline.
Title: v{N}: {summary title}
Content:
## Summary
- [3-5 bullet points of what was implemented]
---
## Planning Archive
[Full implementation phases, user journeys, technical design from this version]
[SPARK-N (uuid) IDs embedded in checkbox lines]
Each version (1, 2, 3...) gets its own sub-doc. Used by /po NN release notes.
Generate cycle release notes. Triggered by /po NN where NN is ISO week number.
{currentYear}/{NN} (e.g., 2026/06)Release Notes: {YYYY}/W{NN}# Release Notes: {YYYY}/W{NN}
## {Module Name}
**v{N}: {title}**
- summary bullet
- summary bullet
## {Module Name}
**v{N}: {title}**
- summary bullet
Load tools via ToolSearch("select:mcp__plane-lightcraft__<name>") or ToolSearch("select:mcp__outline__<name>").
Plane: retrieve_module, update_module, create_module, list_module_work_items, create_work_item, update_work_item, add_work_items_to_module, add_work_items_to_cycle, list_cycles, create_cycle, list_states
Outline: read_document, update_document, create_document, get_document_id_from_title, search_documents
update_module rejects members — HTTP 400retrieve_project_page / retrieve_workspace_page — 404 (broken). Use module description instead.create_cycle uses end_date (not target_date) and owned_by (not lead)docs/Spark/ firstPhase X naming instead of {ver}.{phase} formatBacklog instead of Todo (or Done for /pp) for new items/p (only /pp creates them)/s (all updates are local)Use when deploying Cloudflare Workers, managing R2 storage, or working with Cloudflare infrastructure
Use when working with ANTD components, theme tokens, icons, forms, or feedback components (message/notification/modal)
Use when adding, referencing, or serving static assets (images, fonts, videos, 3D models) through the R2 CDN pipeline with type-safe imports
Use when writing or reviewing JavaScript/TypeScript code for style patterns like concise arrows, inline handlers, expression formatting, or when tempted to use eslint-disable
Use when working with environment variables in frontend code
Use when creating or modifying keyboard shortcuts/hotkeys in frontend code