--- name: project aliases: [proj] description: > Project management — long-running things with notes, next-steps, and status. Use when user mentions "project". --- # Project File-backed project store in `projects/`. Each project is one markdown file with YAML frontmatter (`status`, `priority`, `created`, `slug`) and a free-form body for notes and next-steps. ## Backend `skills/project/scripts/project.py` — deterministic CRUD for frontmatter and basic operations. Agent handles all body edits via `edit_file` / `apply_patch`. ## Commands ### `project add ` — create 1. Run: `uv run skills/project/scripts/project.py add "" [--priority high|medium|low]` 2. Default priority is `medium`. 3. Echo: `Created project '' (priority: )` ### `project list` — list active 1. Run: `uv run skills/project/scripts/project.py list` 2. Echo JSON output. Format as: ``` Active projects: - (priority: high) — ``` 3. If empty → "No active projects." ### `project show ` — display 1. Run: `uv run skills/project/scripts/project.py show ` 2. Echo the full markdown file. ### `project status ` — change status 1. Run: `uv run skills/project/scripts/project.py status ` 2. Echo: `Project '' is now .` ### `project next ` — set next step 1. Read the project file. 2. Use `edit_file` to replace the content under `## Další krok` with the new text. 3. If the section does not exist, add it before the end of the file. 4. Echo: `Next step for '' updated.` ### `project note ` — add a note 1. Read the project file. 2. Use `edit_file` to append a bullet under `## Poznámky`: `- : ` 3. If `## Poznámky` does not exist, add it after the first heading. 4. Echo: `Note added to ''.` ### `project switch ` — session context 1. Run `my(action="set", key="project_context", value="")`. 2. Echo: `Switched to project ''. Next project commands without slug will use this context.` 3. If a command is missing a slug and `project_context` is set, use it automatically. ## Rules - **Slug** = kebab-case from first 4 words of the name. Used as filename (`.md`). - **Frontmatter** is read-only for the agent — never edit it directly in the file. Use `project.py status` to change status. - **Body edits** (notes, next-step, structure changes) are always done by the agent via `edit_file` / `apply_patch`. - **No database** — pure markdown files. Git-friendly, one commit per change. - **Session context** (`project switch`) lives only in `my` scratchpad and is lost on restart. Re-run `project switch` after restart if needed. - **Priority** = `high` | `medium` | `low`. `list` sorts by priority (high first). - **Status** = `active` | `paused` | `done`. `list` shows only `active`. ## Edge cases - `project add` with existing slug → error, do not overwrite. - `project show` / `project status` / `project next` / `project note` with missing slug → "Project '' not found." - Missing `## Poznámky` or `## Další krok` → agent creates the section. - Empty `projects/` → `list` returns empty array.