From lo
Scaffolds the .lo/ directory for a new LO project. Creates project.yml, initializes BACKLOG.md, and optionally reconciles GitHub automation. Use when user says "setup lo", "new lo project", "scaffold lo", "add lo to this repo", or "/lo:setup".
How this skill is triggered — by the user, by Claude, or both
Slash command
/lo:lo-setupThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scaffolds the `.lo/` directory convention in the current repository root. Creates the project identity, backlog, stream, and directory structure that all other LO skills depend on.
Scaffolds the .lo/ directory convention in the current repository root. Creates the project identity, backlog, stream, and directory structure that all other LO skills depend on.
/lo:setup.lo/ directory FIRST. If one exists, warn the user and ask for explicit confirmation before overwriting. Do not silently replace project data.project.yml is pure YAML — no frontmatter delimiters (---), no markdown body.proj_ UUID for new projects. Never reuse an existing ID.references/project-yml-format.md for the authoritative format spec.Before creating anything, check if .lo/ exists at the repo root.
If it exists:
A .lo/ directory already exists in this repo.
Overwriting will replace project.yml, BACKLOG.md, and STREAM.md.
Proceed? (yes / no)
HARD GATE: Do not continue unless the user explicitly confirms. If they say no, stop.
Also check if this is a git repo:
git rev-parse --is-inside-work-tree 2>/dev/null
If not a git repo, warn but proceed:
This directory is not a git repository. LO will work, but GitHub automation
(Step 8) will be skipped. Consider running git init first.
Ask the user for four values:
Title — project name (e.g., "Nexus", "Platform"). If README.md or package.json exists, suggest a value from those.
Description — one-sentence description of what this project does. Suggest from README or package.json if available.
Status (default: explore):
explore — Vibing on an idea. Minimal ceremony.build — Committed to production-ready software. Full CI/CD.open — Multi-tenant ready. Public-facing polish.closed — No longer active.State (default: private):
public — Publicly visibleprivate — Internal onlyGenerate a project ID:
echo "proj_$(uuidgen | tr '[:upper:]' '[:lower:]')"
Write .lo/project.yml — pure YAML, five fields, no extras. See references/project-yml-format.md for the format contract.
id: "proj_[generated-uuid]"
title: "[title from Step 2]"
description: "[description from Step 2]"
status: "[status from Step 2]"
state: "[state from Step 2]"
mkdir -p .lo/park .lo/work .lo/solutions
The full structure after setup:
.lo/
project.yml
BACKLOG.md
STREAM.md
park/ ← conversation captures (/lo:park)
work/ ← active plans and execution (/lo:plan, /lo:work)
solutions/ ← reusable knowledge (/lo:solution)
No .lo/research/ directory — research happens in conversation, not files.
Write .lo/BACKLOG.md with frontmatter counters for safe ID allocation:
---
updated: YYYY-MM-DD
last_feature: 0
last_task: 0
---
## Features
## Tasks
Use today's date for updated. The last_feature and last_task counters start at 0 and are incremented by /lo:park, /lo:plan, and /lo:work when creating new items. These counters prevent ID collisions when done items are pruned from the backlog.
Write .lo/STREAM.md with type frontmatter:
---
type: stream
---
Stream entries are added later via /lo:stream or during /lo:ship release mode.
Ask the user:
Scan the repo for TODO/FIXME/HACK comments and add them to the backlog? (yes / no)
If yes:
TODO, FIXME, HACK commentslast_task in frontmatter for each added itemupdated dateIf no, skip.
### Step 8: Reconcile GitHub Automation (Optional)Skip this step if the repo has no git remote or is not a git repo.
If a remote exists, check for the sync script:
"$(git rev-parse --show-toplevel)/scripts/lo-github-sync.sh" --fix
If the script exists, run it. For explore projects this creates minimal CI config. For build or open projects it sets up full automation.
If the script doesn't exist:
GitHub sync script not found at scripts/lo-github-sync.sh.
Skipping automation setup. You can configure CI/CD manually or add the script later.
Write empty .gitkeep files in directories that start empty:
.lo/park/.gitkeep.lo/work/.gitkeep.lo/solutions/.gitkeepReport what was created:
.lo/ directory created:
project.yml
id: proj_[generated]
title: [title]
description: [description]
status: [status]
state: [state]
BACKLOG.md (empty, counters at 0)
STREAM.md (empty)
park/ conversation captures
work/ plans and execution
solutions/ reusable knowledge
GitHub automation: [applied / skipped (no remote) / skipped (script not found)]
Next steps:
/lo:park — capture an idea
/lo:plan — design a feature
/lo:work — start building
/lo:status — view project dashboard
.lo/ already exists → warn and require explicit confirmation (Step 1)uuidgen not available → fall back to generating a UUID via other meansBefore reporting, verify:
.lo/project.yml exists with valid YAML and all five required fieldsstatus is one of: explore, build, open, closedstate is one of: public, privateid is first field in project.yml, format: proj_ + lowercase UUID v4.lo/BACKLOG.md exists with frontmatter counters.lo/STREAM.md exists with type: stream frontmatterpark/, work/, solutions/.gitkeep files exist in all three subdirectoriesChecking for existing .lo/ directory... none found.
What's the project title?
User: Nexus
One-sentence description?
User: A coordination server for multi-agent engineering teams.
Status (explore/build/open/closed)? Default: explore
User: explore
State (public/private)? Default: private
User: public
.lo/ directory created:
project.yml id: proj_a8f23bc1-4d91-4e7a-b392-1f8c5e6d9a04 title: Nexus description: A coordination server for multi-agent engineering teams. status: explore state: public
BACKLOG.md (empty, counters at 0) STREAM.md (empty) park/ conversation captures work/ plans and execution solutions/ reusable knowledge
GitHub automation: applied (explore — dormant CI)
Next steps: /lo:park — capture an idea /lo:plan — design a feature /lo:work — start building /lo:status — view project dashboard
npx claudepluginhub looselyorganized/lo-plugin --plugin loDetects single-project or monorepo structure, creates .groundwork.yml config for monorepos, updates .gitignore, and persists project selection for Groundwork.
Initializes new development projects by creating memory folder structure (architecture, implementation_process), project_state.md for 3-phase workflow tracking, and registering in project registry. Use for 'start new project' or init commands.
Provides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.