Research 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.
npx skills add https://github.com/Aperivue/medsci-skills --skill manage-project
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.
/manage-project init {name} --type {type} --journal {journal} [--ssot] [--zotero-collection NAME]Create a complete project scaffold for a new research paper.
Parameters:
{name} -- Project identifier (e.g., nnunet-skull-fracture, rfa-meta-analysis)--type -- Paper type: original | meta | case | animal | technical | ai_validation | letter--journal -- Target journal: RYAI | AJR | Radiology | European_Radiology | KJR | INSI | AJNR | generic--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.--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.SSOT template substitutions: {{PROJECT_ID}} → {name}; {{PROJECT_TYPE}} → the SSOT
project_type enum mapped from --type (original → original_research, meta → meta_analysis,
case → case_report, ai_validation → ai_validation, else other). Without
--zotero-collection, library_id / collection_key stay null until the owner links an
existing collection.
Implementation: backed by scripts/init_project.py. Invoke it directly when running outside
the skill harness (from the medsci-skills repo root):
python3 scripts/init_project.py \
--name {name} --type {type} --journal {journal} [--ssot] \
--project-root {target_dir}
The helper writes the contract file (SSOT.yaml with --ssot, else legacy project.yaml), the
directory scaffold, the minimal stubs scripts/validate_project_contract.py requires
(manuscript/index.qmd, artifact_manifest.json, qc/status.json), the memory-file templates,
and project_state.json. qc/migration_complete is NOT written by init — that marker belongs
to the migrate pipeline.
Do not hand-build the scaffold. The script is the source of truth for the tree and for
project_state.json; a hand-built one drifts from what the contract validator expects.
Read on demand:
| File | Read it when | Cost if read blindly |
|---|---|---|
| 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 |
/manage-project migrate-ssot [--no-mark-complete]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.
python3 scripts/migrate_project_to_ssot.py \
--project-root . --write --mark-complete
--write --mark-complete (enforce-ready).--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.qc/migration_complete unless the generated SSOT.yaml passes validate_project_contract.py AND contract_mode=ssot. Do not touch qc/migration_complete manually.Re-run after resolving failures; the script is idempotent.
/manage-project statusReport current progress. Reads project_state.json, scans existing files, and checks whether key project memory files are present and aligned.
Output format:
## Project Status: {name}
Journal: {journal} | Type: {type} | Created: {date}
Target submission: {date or "not set"}
### Phase Progress
[check] Phase 0: Project Init (complete)
[check] Phase 1: Outline (complete)
[check] Phase 2: Tables & Figures (complete)
[work] Phase 3: Methods (IN PROGRESS)
[wait] Phase 4: Results (pending)
[wait] Phase 5: Discussion (pending)
[wait] Phase 6: Introduction & Abstract (pending)
[wait] Phase 7: Polish (pending)
### Word Counts
Abstract: 0 / 250 words
Introduction: 0 / 600 words
Methods: 847 / 1000 words 85%
Results: 0 / 900 words
Discussion: 0 / 800 words
Total: 847 / 3500 words (journal limit)
### Quality Gates
Critic score (Methods): 87/100 PASS
Citations verified: 12/12
Reporting guideline: pending
### Project Memory
PROJECT.md: present
STATUS.md: stale (last updated 12 days ago)
CLAIMS.md: missing
DATA_DICTIONARY.md: present
ANALYSIS_PLAN.md: missing
REVIEW_LOG.md: n/a (not in revision)
### Next Steps
1. Complete Methods draft (150 words remaining)
2. Run /analyze-stats for Table 1 and diagnostic accuracy
3. Begin Results (Phase 4)
/manage-project sync-memoryAudit and refresh project memory files so other agents can work with less ambiguity.
What it does:
PROJECT.md, STATUS.md, CLAIMS.md, DATA_DICTIONARY.md, ANALYSIS_PLAN.md, REVIEW_LOG.mdproject_state.json with the current manuscript phaseSuggested use cases:
project-manager/manage-project checklistGenerate a pre-submission checklist covering all quality dimensions.
Output: submission/pre_submission_checklist.md
Read and output the pre-submission checklist from
${CLAUDE_SKILL_DIR}/references/pre_submission_checklist.md.
/manage-project timeline {submission_date}Generate a backwards timeline from submission date.
Example: /manage-project timeline 2026-05-01
Output:
## Backwards Timeline to Submission: 2026-05-01
Week -8 (2026-03-06): Phase 0-2 complete (scaffold, outline, tables)
Week -7 (2026-03-13): Methods draft -> critic pass
Week -6 (2026-03-20): Results draft -> critic pass + /analyze-stats complete
Week -5 (2026-03-27): Discussion draft -> critic pass
Week -4 (2026-04-03): Introduction + Abstract -> critic pass
Week -3 (2026-04-10): AI pattern removal + /check-reporting (reporting guideline)
Week -2 (2026-04-17): /self-review + co-author review
Week -1 (2026-04-24): Final revisions + figures at 300 DPI + /lit verification
SUBMISSION (2026-05-01): Upload to journal portal
Critical path: Statistics must be complete by Week -6.
Run /analyze-stats as soon as data is available.
# PROJECT
- Title:
- Type:
- Primary question:
- Target journal/venue:
- Lead folder:
- Collaborators:
- Last updated:
# STATUS
- Current stage:
- Current blocker:
- Next actions:
1.
2.
3.
- Last updated:
# CLAIMS
| Claim | Supporting result | Source table/figure | Citation status |
|------|-------------------|---------------------|-----------------|
| ... | ... | ... | ... |
# DATA DICTIONARY
| Variable | Definition | Timing | Notes |
|----------|------------|--------|------|
| ... | ... | ... | ... |
# ANALYSIS PLAN
- Primary endpoint:
- Secondary endpoints:
- Main comparator:
- Statistical methods:
- Validation strategy:
- Sensitivity analyses:
# REVIEW LOG
| Reviewer comment | Planned action | Status | Location updated |
|------------------|----------------|--------|------------------|
| ... | ... | ... | ... |
When called from /manage-project init, automatically:
write-paper/references/journal_profiles/{JOURNAL}.mdwrite-paper/references/paper_types/{TYPE}.mdcheck-reporting/references/checklists/After /manage-project checklist, recommend calling:
/self-review for manuscript quality gate/search-lit to verify all citations/write-paper Phase 7)Phase numbers:
Phase status values: pending | in_progress | complete | blocked
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
Interact with Zotero reference management libraries using the pyzotero Python client. Retrieve, create, update, and delete items, collections, tags, and attachments via the Zotero Web API v3. Use this skill when working with Zotero libraries programmatically, managing bibliographic references, exporting citations, searching library contents, uploading PDF attachments, or building research automation workflows that integrate with Zotero.
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
Create, analyze, and visualize complex networks and graphs in Python with NetworkX. Use when working with network/graph data structures, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks (random, scale-free, small-world), reading/writing graph file formats, or drawing network topologies. Common applications include social, biological, transportation, and citation networks.
Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.
Interact with Zotero reference management libraries using the pyzotero Python client. Retrieve, create, update, and delete items, collections, tags, and attachments via the Zotero Web API v3. Use this skill when working with Zotero libraries programmatically, managing bibliographic references, exporting citations, searching library contents, uploading PDF attachments, or building research automation workflows that integrate with Zotero.
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
A practical, jargon-free guide to fp-ts functional programming - the 80/20 approach that gets results without the academic overhead. Use when writing TypeScript with fp-ts library.
Take aperivue/manage-project from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.