Project OS Organizer Skill
Why This Skill
Use this when a user is juggling many AI-built projects and needs one simple command surface to:
- 1. See what is active now.
- Capture progress and next steps fast.
- Resume any project in one jump (local/GitHub/chat).
Security Defaults
- 1. Remote install is disabled by default.
- Chat transcript indexing is disabled by default.
- GitHub sync/token usage is disabled by default.
- Home-directory heuristic discovery is disabled by default.
To opt in explicitly:
- 1.
PROJECT_OS_INCLUDE_CHAT_ROOTS=1 enables chat transcript indexing. - INLINECODE1 enables GitHub username/token integration.
- INLINECODE2 enables broad home-directory discovery.
- INLINECODE3 allows remote clone/install if
PROJECT_OS_ROOT is missing.
Goal
Produce a complete, local-first project inventory that answers:
- 1. What projects exist right now?
- Which are active/blocked/stale?
- What is each project actually about?
- Where did the user leave off?
- How can the user jump back in immediately?
- How can the user quickly edit status/next steps/items without leaving OpenClaw?
Default Behavior (Natural Language First)
Default action for every user message:
- 1. Interpret the message.
- Run:
scripts/project_router.sh "<user message>". - Return the router output directly in plain language.
Users should not need to type scripts, Python, paths, or flags.
Fallback for power users:
- - Use the short wrapper command: INLINECODE6
- Examples:
project, project focus, project today, project inbox "idea: test", INLINECODE11
Plain-language request mapping:
- 1. "What am I working on today?" -> activity today
- "Show my projects" -> grouped project list (Now/Later/Blocked/Done)
- "Focus list" -> top focus items
- "Add this idea: ..." -> inbox capture
- "Next for project-os: ..." -> add next
- "Mark X blocked" -> set simple status
- "Start dashboard" -> dashboard start
- "Resume project X" -> resume pack
- "Only track A, B, C" -> set tracked scope (activity will only include these)
- "Mute X" / "Untrack X" / "Show scope" -> scope controls
Response style in non-technical mode:
- 1. Keep responses short and direct.
- Do not expose technical command details unless user asks.
- For activity questions, always return
Activity Criteria + day sections. - If a project name is ambiguous, ask one short clarification question.
Project Definition
Treat an item as a project if it matches any of these:
- 1. Git repository folder.
- Non-git code folder with project markers (
package.json, pyproject.toml, Cargo.toml, etc). - Chat session (Claude/Codex) that does not match an existing project; create a chat-derived project.
- Claude workspace chats should map to deeper subprojects when session folders indicate a nested workspace path.
Reject likely non-project folders in collection roots (docs-only, logs, backups, notes-only folders) unless there is strong code/marker evidence.
Reject low-signal chat-only entries as standalone projects unless they contain a useful path hint or meaningful project intent.
Required Workflow
- 1. Run
scripts/bootstrap.sh first. - Validate coverage:
- run
python3 -m project_os.cli --db ~/.project_os/openclaw_test.db --config ~/.project_os/openclaw_test_config.json list-projects --limit 200
- run
python3 -m project_os.cli --db ~/.project_os/openclaw_test.db --config ~/.project_os/openclaw_test_config.json list-sessions --limit 50
- run
python3 -m project_os.cli --db ~/.project_os/openclaw_test.db --config ~/.project_os/openclaw_test_config.json list-items --status open --limit 80
- run
python3 -m project_os.cli --db ~/.project_os/openclaw_test.db --config ~/.project_os/openclaw_test_config.json squash-chat-projects
- 4. If user wants visual mode, run
scripts/start_dashboard.sh. - If user wants quick resume context, run
scripts/write_memory.sh and use ~/.project_os/PROJECT_MEMORY.md.
First-Run (Production)
Run this for a first-time user:
- 1. INLINECODE24
- INLINECODE25
- Confirm:
-
RESULT_STATUS=ok
-
RESULT_DASHBOARD_URL=...
- INLINECODE28
If project-os repo is not present locally, the skill will fail safely by default and instruct setting PROJECT_OS_ROOT. Remote install is explicit opt-in only.
Operation Modes
- - Dashboard mode: simple visual triage (
Focus Today, Now, Blocked, Later, Done) and jump links. - Dashboard mode includes:
- Quick Inbox capture (freeform note -> auto-routed update/next/reminder/idea/blocker)
- Daily Check-In panel (done + next + blocker)
- Focus list, stale nudges, weekly snapshot, and server health
- - Dashboard intentionally avoids recommendation-score noise and focuses on plain language:
-
What it is (derived from project files like README/package metadata)
-
Where left off
-
Do next
- inline editing: set simple status (
now/later/blocked/done), set next action, add update/next/reminder/idea/blocker, mark items done/dismissed
- session resume buttons for both tools (
Resume in Claude and
Resume in Codex) when session link is valid
- - Memory mode: markdown snapshot for fast resume in any chat.
Default recommendation: use both.
OpenClaw Command-First Updates
Use CLI commands as the primary interface:
- 1.
add-update for what changed. - INLINECODE43 for the immediate next step (also updates project
next_action). - INLINECODE45 for date/time-based follow-ups.
- INLINECODE46 for backlog thoughts.
- INLINECODE47 and
set-item-status to triage/close items. - Use
scripts/project_actions.sh for short aliases around these commands. - For activity-window questions ("what did I work on today/yesterday"), run
scripts/activity_report.sh --when both or scripts/project_actions.sh activity --when both. - Do not guess activity by project name or status; only use timestamp evidence from the report criteria.
- Activity report excludes archived projects by default (use
--include-archived only if user asks). - Response contract for activity-window answers:
- always include
Activity Criteria
- always include
Today (...) and/or
Yesterday (...) headings
- include at least one evidence line per listed project (
local_commit,
github_push,
session, or
note)
- if no projects match, explicitly return INLINECODE60
OpenClaw Usage
- 1. In OpenClaw, invoke this skill by name:
project-os-organizer. - For first run setup:
project setup (or scripts/easy_mode.sh setup). - Default day-to-day: just type plain English in chat and route through
project_router.sh. - Optional shortcuts use only
project .... - For one-command local install from this repo, run
scripts/install_openclaw_skill.sh. - For non-interactive OpenClaw agents, use:
-
scripts/openclaw_smoke.sh for strict CI-style smoke (non-zero exit on failure)
-
scripts/openclaw_smoke_agent.sh for agent-safe smoke (always exits zero, returns
RESULT_STATUS)
-
scripts/read_smoke_result.sh to fetch the last smoke result file when command output is flaky
-
scripts/bootstrap.sh --noninteractive (timeout-safe quick mode)
-
scripts/bootstrap.sh --noninteractive-full (full refresh mode)
-
scripts/start_dashboard.sh --detach --restart
- Smoke commands return machine-readable lines:
-
RESULT_STATUS
-
RESULT_ERROR
-
RESULT_DASHBOARD_URL
-
RESULT_DASHBOARD_PID
-
RESULT_PORT_8765_LISTENING
-
RESULT_CURL_HEAD
-
RESULT_SMOKE_LOG
-
RESULT_DASHBOARD_LOG
-
RESULT_RESULT_FILE
- 7. For quick editing from chat:
-
scripts/project_actions.sh list --limit 80
-
scripts/project_actions.sh set-status --project "<name|id>" --status blocked
-
scripts/project_actions.sh set-next --project "<name|id>" --text "next step"
-
scripts/project_actions.sh add-update --project "<name|id>" --text "what changed"
-
scripts/project_actions.sh add-next --project "<name|id>" --text "immediate next step"
-
scripts/project_actions.sh add-reminder --project "<name|id>" --text "follow up" --due 2026-03-01
-
scripts/project_actions.sh add-blocker --project "<name|id>" --text "what is blocked"
-
scripts/project_actions.sh simple-status --project "<name|id>" --status now
-
scripts/project_actions.sh focus --limit 3
-
scripts/project_actions.sh stale --days 14 --limit 20
-
scripts/project_actions.sh weekly --days 7 --limit 12
-
scripts/project_actions.sh notify --period daily
-
scripts/project_actions.sh inbox --text "freeform note"
-
scripts/project_actions.sh checkin --project "<name|id>" --done "..." --next "..." --blocker "..."
-
scripts/project_actions.sh duplicates --limit 50
-
scripts/project_actions.sh merge --keep "<id|name>" --drop "<id|name>"
-
scripts/project_actions.sh ask --text "mark project-os blocked"
-
scripts/project_actions.sh set-item --item <id> --status done
- 8. For "worked on today/yesterday":
-
scripts/project_actions.sh activity --when both
- 9. For personal scope control:
-
scripts/project_actions.sh scope --set "project-os" "polymarket-trader-v2"
-
scripts/project_actions.sh track --project "project-os"
-
scripts/project_actions.sh mute --project "clawd"
-
scripts/project_actions.sh scope
- Add
--include-archived only on explicit request.
- Return the output sections
Activity Criteria,
Today (...), and
Yesterday (...) so the user sees exactly how projects were counted.
Safety and Scope
- 1. Local-first only.
- Do not mutate repositories/servers automatically.
- Do not invent project state; infer from scans/sessions and expose uncertainty.
- Prefer broad root coverage to avoid missing nested subfolders.
- Keep non-git project discovery at root-level by default (
include_nested_non_git_projects: false) to avoid noisy submodules. - Keep collection discovery strict: include real project subfolders, drop random text-only folders.
References
- - INLINECODE111
- INLINECODE112
项目操作系统组织技能
为何需要此技能
当用户同时管理多个AI构建的项目,需要一个简单的命令界面来:
- 1. 查看当前活跃项目。
- 快速记录进度和后续步骤。
- 一键恢复任何项目(本地/GitHub/聊天)。
安全默认设置
- 1. 默认禁用远程安装。
- 默认禁用聊天记录索引。
- 默认禁用GitHub同步/令牌使用。
- 默认禁用主目录启发式发现。
如需明确启用:
- 1. PROJECTOSINCLUDECHATROOTS=1 启用聊天记录索引。
- PROJECTOSENABLEGITHUBSYNC=1 启用GitHub用户名/令牌集成。
- PROJECTOSENABLEHOMEDISCOVERY=1 启用广泛的主目录发现。
- PROJECTOSAUTOSETUP=1 PROJECTOSALLOWREMOTEINSTALL=1 允许在缺少PROJECTOS_ROOT时进行远程克隆/安装。
目标
生成一个完整的、本地优先的项目清单,回答以下问题:
- 1. 当前存在哪些项目?
- 哪些是活跃/受阻/过时的?
- 每个项目实际是关于什么的?
- 用户上次在哪里停止?
- 用户如何立即跳回?
- 用户如何在不离开OpenClaw的情况下快速编辑状态/后续步骤/项目?
默认行为(自然语言优先)
每条用户消息的默认操作:
- 1. 解释消息。
- 运行:scripts/project_router.sh <用户消息>。
- 直接以通俗语言返回路由输出。
用户无需输入脚本、Python、路径或标志。
高级用户的备选方案:
- - 使用简短包装命令:project ...
- 示例:project、project focus、project today、project inbox idea: test、project dashboard start
通俗语言请求映射:
- 1. 我今天在做什么? -> 今日活动
- 显示我的项目 -> 分组项目列表(现在/稍后/受阻/完成)
- 焦点列表 -> 首要焦点事项
- 添加这个想法:... -> 收件箱捕获
- 项目操作系统的下一步:... -> 添加下一步
- 标记X为受阻 -> 设置简单状态
- 启动仪表板 -> 启动仪表板
- 恢复项目X -> 恢复包
- 只跟踪A、B、C -> 设置跟踪范围(活动将仅包含这些)
- 静音X/取消跟踪X/显示范围 -> 范围控制
非技术模式下的响应风格:
- 1. 保持响应简短直接。
- 除非用户询问,否则不暴露技术命令细节。
- 对于活动问题,始终返回活动标准+日期分段。
- 如果项目名称不明确,提出一个简短澄清问题。
项目定义
将项目视为满足以下任一条件的条目:
- 1. Git仓库文件夹。
- 带有项目标记的非Git代码文件夹(package.json、pyproject.toml、Cargo.toml等)。
- 与现有项目不匹配的聊天会话(Claude/Codex);创建聊天衍生项目。
- 当会话文件夹指示嵌套工作区路径时,Claude工作区聊天应映射到更深层的子项目。
拒绝收集根目录中可能非项目的文件夹(仅文档、日志、备份、仅笔记文件夹),除非有强有力的代码/标记证据。
拒绝低信号仅聊天条目作为独立项目,除非它们包含有用的路径提示或有意义的项目意图。
必需工作流程
- 1. 首先运行scripts/bootstrap.sh。
- 验证覆盖范围:
- 运行python3 -m project
os.cli --db ~/.projectos/openclaw
test.db --config ~/.projectos/openclaw
testconfig.json list-projects --limit 200
- 运行python3 -m project
os.cli --db ~/.projectos/openclaw
test.db --config ~/.projectos/openclaw
testconfig.json list-sessions --limit 50
- 运行python3 -m project
os.cli --db ~/.projectos/openclaw
test.db --config ~/.projectos/openclaw
testconfig.json list-items --status open --limit 80
- 运行python3 -m project
os.cli --db ~/.projectos/openclaw
test.db --config ~/.projectos/openclaw
testconfig.json squash-chat-projects
- 4. 如果用户想要可视化模式,运行scripts/startdashboard.sh。
- 如果用户想要快速恢复上下文,运行scripts/writememory.sh并使用~/.projectos/PROJECTMEMORY.md。
首次运行(生产环境)
为首次用户运行:
- 1. scripts/openclawsmokeagent.sh
- scripts/readsmokeresult.sh
- 确认:
- RESULT_STATUS=ok
- RESULT
DASHBOARDURL=...
- RESULT
PORT8765_LISTENING=yes
如果本地不存在project-os仓库,技能将默认安全失败,并指示设置PROJECTOSROOT。远程安装仅限明确选择加入。
操作模式
- - 仪表板模式:简单的可视化分类(今日焦点、现在、受阻、稍后、完成)和跳转链接。
- 仪表板模式包括:
- 快速收件箱捕获(自由格式笔记 -> 自动路由更新/下一步/提醒/想法/阻碍项)
- 每日签到面板(已完成 + 下一步 + 阻碍项)
- 焦点列表、过时提醒、每周快照和服务器健康状态
- 这是什么(从项目文件如README/包元数据派生)
- 上次停止位置
- 下一步操作
- 内联编辑:设置简单状态(现在/稍后/受阻/完成)、设置下一步操作、添加更新/下一步/提醒/想法/阻碍项、标记项目为完成/已关闭
- 会话链接有效时,提供两个工具的会话恢复按钮(在Claude中恢复和在Codex中恢复)
- - 记忆模式:用于在任何聊天中快速恢复的Markdown快照。
默认建议:两者都使用。
OpenClaw命令优先更新
使用CLI命令作为主要界面:
- 1. add-update用于变更内容。
- add-next用于立即下一步(同时更新项目nextaction)。
- add-reminder用于基于日期/时间的后续跟进。
- add-idea用于积压想法。
- list-items和set-item-status用于分类/关闭项目。
- 使用scripts/projectactions.sh作为这些命令的简短别名。
- 对于活动窗口问题(我今天/昨天做了什么),运行scripts/activityreport.sh --when both或scripts/projectactions.sh activity --when both。
- 不要通过项目名称或状态猜测活动;仅使用报告标准中的时间戳证据。
- 活动报告默认排除归档项目(仅在用户要求时使用--include-archived)。
- 活动窗口答案的响应合同:
- 始终包含活动标准
- 始终包含今天 (...)和/或昨天 (...)标题
- 每个列出的项目至少包含一条证据行(local
commit、githubpush、session或note)
- 如果没有匹配的项目,明确返回- 无
OpenClaw使用
- 1. 在OpenClaw中,通过名称调用此技能:project-os-organizer。
- 首次运行设置:project setup(或scripts/easymode.sh setup)。
- 默认日常使用:只需在聊天中输入通俗英语,通过projectrouter.sh路由。
- 可选快捷方式仅使用project ...。
- 从此仓库一键本地安装,运行scripts/installopenclawskill.sh。
- 对于非交互式OpenClaw代理,使用:
- scripts/openclaw_smoke.sh用于严格的CI风格冒烟测试(失败时非零退出)
- scripts/openclaw
smokeagent.sh用于代理安全冒烟测试(始终零退出,返回RESULT_STATUS)
- scripts/read
smokeresult.sh用于在命令输出不稳定时获取最后的冒烟结果文件
- scripts/bootstrap.sh --noninteractive(超时安全快速模式)
- scripts/bootstrap.sh --noninteractive-full(完全刷新模式)
- scripts/start_dashboard.sh --detach --restart
- 冒烟命令返回机器可读行:
- RESULT_STATUS
- RESULT_ERROR