Project OS Organizer
Privacy-first, chat-first project manager for vibe coders. Track projects, capture updates, and resume work across local folders, Claude/Codex, and GitHub wi...
Like a lobster shell, security has layers — review code before you run it.
License
Runtime requirements
SKILL.md
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:
- See what is active now.
- Capture progress and next steps fast.
- Resume any project in one jump (local/GitHub/chat).
Security Defaults
- 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:
PROJECT_OS_INCLUDE_CHAT_ROOTS=1enables chat transcript indexing.PROJECT_OS_ENABLE_GITHUB_SYNC=1enables GitHub username/token integration.PROJECT_OS_ENABLE_HOME_DISCOVERY=1enables broad home-directory discovery.PROJECT_OS_AUTO_SETUP=1 PROJECT_OS_ALLOW_REMOTE_INSTALL=1allows remote clone/install ifPROJECT_OS_ROOTis missing.
Goal
Produce a complete, local-first project inventory that answers:
- 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:
- 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:
project ... - Examples:
project,project focus,project today,project inbox "idea: test",project dashboard start
Plain-language request mapping:
- "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:
- 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:
- 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
- Run
scripts/bootstrap.shfirst. - 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
- run
- If user wants visual mode, run
scripts/start_dashboard.sh. - If user wants quick resume context, run
scripts/write_memory.shand use~/.project_os/PROJECT_MEMORY.md.
First-Run (Production)
Run this for a first-time user:
scripts/openclaw_smoke_agent.shscripts/read_smoke_result.sh- Confirm:
RESULT_STATUS=okRESULT_DASHBOARD_URL=...RESULT_PORT_8765_LISTENING=yes
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 offDo 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 ClaudeandResume 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:
add-updatefor what changed.add-nextfor the immediate next step (also updates projectnext_action).add-reminderfor date/time-based follow-ups.add-ideafor backlog thoughts.list-itemsandset-item-statusto triage/close items.- Use
scripts/project_actions.shfor short aliases around these commands. - For activity-window questions ("what did I work on today/yesterday"), run
scripts/activity_report.sh --when bothorscripts/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-archivedonly if user asks). - Response contract for activity-window answers:
- always include
Activity Criteria - always include
Today (...)and/orYesterday (...)headings - include at least one evidence line per listed project (
local_commit,github_push,session, ornote) - if no projects match, explicitly return
- none
OpenClaw Usage
- In OpenClaw, invoke this skill by name:
project-os-organizer. - For first run setup:
project setup(orscripts/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.shfor strict CI-style smoke (non-zero exit on failure)scripts/openclaw_smoke_agent.shfor agent-safe smoke (always exits zero, returnsRESULT_STATUS)scripts/read_smoke_result.shto fetch the last smoke result file when command output is flakyscripts/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_STATUSRESULT_ERRORRESULT_DASHBOARD_URLRESULT_DASHBOARD_PIDRESULT_PORT_8765_LISTENINGRESULT_CURL_HEADRESULT_SMOKE_LOGRESULT_DASHBOARD_LOGRESULT_RESULT_FILE
- For quick editing from chat:
scripts/project_actions.sh list --limit 80scripts/project_actions.sh set-status --project "<name|id>" --status blockedscripts/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-01scripts/project_actions.sh add-blocker --project "<name|id>" --text "what is blocked"scripts/project_actions.sh simple-status --project "<name|id>" --status nowscripts/project_actions.sh focus --limit 3scripts/project_actions.sh stale --days 14 --limit 20scripts/project_actions.sh weekly --days 7 --limit 12scripts/project_actions.sh notify --period dailyscripts/project_actions.sh inbox --text "freeform note"scripts/project_actions.sh checkin --project "<name|id>" --done "..." --next "..." --blocker "..."scripts/project_actions.sh duplicates --limit 50scripts/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
- For "worked on today/yesterday":
scripts/project_actions.sh activity --when both
- 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-archivedonly on explicit request. - Return the output sections
Activity Criteria,Today (...), andYesterday (...)so the user sees exactly how projects were counted.
Safety and Scope
- 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
references/project-definition.mdreferences/workflow.md
Files
19 totalComments
Loading comments…
