$npx -y skills add Aperivue/medsci-skills --skill manage-projectResearch project management for medical manuscripts. Scaffold project structure, track writing progress across phases, maintain project memory files, generate submission checklists and backwards timelines. Commands: init, status, sync-memory, checklist, timeline.
| 1 | # Manage-Project Skill -- Research Project Management |
| 2 | |
| 3 | ## Purpose |
| 4 | |
| 5 | Scaffold new research projects, track manuscript writing progress, maintain lightweight project memory, generate pre-submission checklists, and create backwards submission timelines. Integrates with all other writing skills and the project-manager agent. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Commands |
| 10 | |
| 11 | ### `/manage-project init {name} --type {type} --journal {journal} [--ssot] [--zotero-collection NAME]` |
| 12 | |
| 13 | Create a complete project scaffold for a new research paper. |
| 14 | |
| 15 | **Parameters:** |
| 16 | - `{name}` -- Project identifier (e.g., `nnunet-skull-fracture`, `rfa-meta-analysis`) |
| 17 | - `--type` -- Paper type: `original | meta | case | animal | technical | ai_validation | letter` |
| 18 | - `--journal` -- Target journal: `RYAI | AJR | Radiology | European_Radiology | KJR | INSI | AJNR | generic` |
| 19 | - `--ssot` -- Emit `SSOT.yaml` (schema v1) from `templates/SSOT.yaml.template` instead of legacy `project.yaml`. Required for Phase 1C auto-enforce (the PostToolUse verify-refs hook blocks instead of warns). New projects should pass `--ssot`; legacy in-flight projects stay on `project.yaml` until `/manage-project migrate-ssot` is run. |
| 20 | - `--zotero-collection NAME` -- Optional. Create a Zotero collection via pyzotero and populate `library_id` + `collection_key` in the contract. Requires `ZOTERO_API_KEY` + `ZOTERO_LIBRARY_ID` (optionally `ZOTERO_LIBRARY_TYPE`, default `user`). **Graceful degrade:** with pyzotero missing or credentials absent, the contract is scaffolded with `library_id: null` / `collection_key: null` and a WARN is printed. |
| 21 | |
| 22 | **SSOT template substitutions:** `{{PROJECT_ID}}` → `{name}`; `{{PROJECT_TYPE}}` → the SSOT |
| 23 | `project_type` enum mapped from `--type` (`original → original_research`, `meta → meta_analysis`, |
| 24 | `case → case_report`, `ai_validation → ai_validation`, else `other`). Without |
| 25 | `--zotero-collection`, `library_id` / `collection_key` stay `null` until the owner links an |
| 26 | existing collection. |
| 27 | |
| 28 | **Implementation:** backed by `scripts/init_project.py`. Invoke it directly when running outside |
| 29 | the skill harness (from the `medsci-skills` repo root): |
| 30 | |
| 31 | ```bash |
| 32 | python3 scripts/init_project.py \ |
| 33 | --name {name} --type {type} --journal {journal} [--ssot] \ |
| 34 | --project-root {target_dir} |
| 35 | ``` |
| 36 | |
| 37 | The helper writes the contract file (`SSOT.yaml` with `--ssot`, else legacy `project.yaml`), the |
| 38 | directory scaffold, the minimal stubs `scripts/validate_project_contract.py` requires |
| 39 | (`manuscript/index.qmd`, `artifact_manifest.json`, `qc/status.json`), the memory-file templates, |
| 40 | and `project_state.json`. **`qc/migration_complete` is NOT written by init** — that marker belongs |
| 41 | to the migrate pipeline. |
| 42 | |
| 43 | **Do not hand-build the scaffold.** The script is the source of truth for the tree and for |
| 44 | `project_state.json`; a hand-built one drifts from what the contract validator expects. |
| 45 | |
| 46 | **Read on demand:** |
| 47 | |
| 48 | | File | Read it when | Cost if read blindly | |
| 49 | |---|---|---| |
| 50 | | `references/init_scaffold.md` | you need to know where a scaffolded file lands, or what a `project_state.json` field means | ~1,400 tokens describing output the script already produces for you | |
| 51 | |
| 52 | --- |
| 53 | ### `/manage-project migrate-ssot [--no-mark-complete]` |
| 54 | |
| 55 | Thin wrapper over `scripts/migrate_project_to_ssot.py` that converts a legacy `project.yaml` project into SSOT.yaml form and, by default, touches `qc/migration_complete` so Phase 1C `auto` mode switches from `warn` to `enforce`. |
| 56 | |
| 57 | ```bash |
| 58 | python3 scripts/migrate_project_to_ssot.py \ |
| 59 | --project-root . --write --mark-complete |
| 60 | ``` |
| 61 | |
| 62 | - Default: `--write --mark-complete` (enforce-ready). |
| 63 | - `--no-mark-complete` flag form: run with `--write` only. Use when the project still has open QC failures — enforcement is deferred until the migration is validated. |
| 64 | - The migrate script refuses to touch `qc/migration_complete` unless the generated SSOT.yaml passes `validate_project_contract.py` AND `contract_mode=ssot`. Do not `touch qc/migration_complete` manually. |
| 65 | |
| 66 | Re-run after resolving failures; the script is idempotent. |
| 67 | |
| 68 | --- |
| 69 | |
| 70 | ### `/manage-project status` |
| 71 | |
| 72 | Report current progress. Reads `project_state.json`, scans existing files, and checks whether key project memory files are present and aligned. |
| 73 | |
| 74 | **Output format:** |
| 75 | |
| 76 | ``` |
| 77 | ## Project Status: {name} |
| 78 | Journal: {journal} | Type: {type} | Created: {date} |
| 79 | Target submission: {date or "not set"} |
| 80 | |
| 81 | ### Phase Progress |
| 82 | [check] Phase 0: Project Init (complete) |
| 83 | [check] Phase 1: Outline (complete) |
| 84 | [check] Phase 2: Tables & Figures (complete) |
| 85 | [work] Phase 3: Methods (IN PROGRESS) |
| 86 | [wait] Phase |