From research-workspace
Inspects research repositories and generates .research/ manifests (project_manifest.yml, experiment_matrix.yml, data_dictionary.yml) from README, package files, git log, and project dirs for future AI sessions to skip rescanning. Triggered by 'compress project context' or similar.
npx claudepluginhub wenyuchiou/ai-research-skills --plugin research-workspaceThis skill uses the workspace's default tool permissions.
Build a compact, machine-readable workspace memory at the **project root**
Reads .research/ manifests to generate project orientation memos summarizing research questions, datasets, experiments, stages, entrypoints, artifacts, and open questions. Use for quick repo or research project orientation.
Provides best practices for project folder organization, file naming conventions, directory structures, and version control for research and development projects. Use for new setups, reorganizations, team conventions, and data-intensive work.
Documents codebases as-is by spawning parallel sub-agents to research files and synthesize findings into reports. Activates on /research or codebase understanding requests.
Share bugs, ideas, or general feedback.
Build a compact, machine-readable workspace memory at the project root
under .research/. Other research-hub skills (project-orienter,
literature-triage-matrix, paper-memory-builder) read these files instead of
rescanning the repo every session, which is where the token savings come from.
This is the foundation skill. Run it once per project and refresh when the project's research question, datasets, or experiment set changes.
Trigger phrases:
.research/ folder for this repo."Not for:
outputs/,
not .research/.The compressor reads whatever your project has. None of these are required. If a file is missing, that field of the manifest stays empty (see "What NOT to do"). Skim, do not deep-read.
For any project:
README.md at the repo root — project overview. Single most useful
input.For code-based research projects (Python / JS / R / Julia / etc.):
pyproject.toml / package.json / requirements.txt /
renv.lock / Project.toml — primary tools.scripts/ and notebooks/ — main entrypoints.data/ and outputs/ — datasets and artifacts.For qualitative / archival / interpretive projects:
notes/, drafts/, sources/ — manuscript-track work..obsidian/ — Obsidian vault settings, if present.bibliography.md, sources.bib,
references.json).For both:
docs/ — long-form descriptions..git/HEAD and git log --oneline -20 — current branch + recent
activity, if a git repo..research/ (if it already exists) — for refresh, not first-time
create.An empty manifest field is better than an invented one.
A literature-review project with just README.md + notes/ + a few
draft markdown files will produce a manifest like:
project_name: "late-ming-print-culture"
research_area: "history of book publishing"
research_question: "" # left empty — README didn't state one
current_stage: "discovery"
primary_tools: [] # no code project
key_repositories: []
data_sources: [] # no data/ directory, intentional
model_components: []
main_entrypoints: [] # no scripts/ either
important_outputs: # populated from notes/ + drafts/
- "notes/01-survey.md"
- "notes/02-method.md"
- "drafts/intro-v1.md"
paper_or_deliverable: ""
last_updated: "2026-04-26"
Empty fields are honest signals to the next AI session that this is a non-code project. They are not failures.
Write these to <project-root>/.research/:
project_manifest.yml — top-level orientation. Required.experiment_matrix.yml — per-experiment status. Required if scripts/ or notebooks/ exist.data_dictionary.yml — datasets and schemas. Required if data/ exists.run_log.md — append a single entry recording this run.decisions.md — leave empty if no ADRs yet; do not invent decisions.open_questions.md — list any obvious unknowns you spotted (e.g.
undocumented dataset, missing license, ambiguous entrypoint).If a file already exists, update don't replace: keep human-edited fields, fill in only the empty ones unless the user said "regenerate from scratch".
Full schema lives in
docs/research-workspace-manifest.md.
Quick reminder of project_manifest.yml required fields:
project_nameresearch_arearesearch_questioncurrent_stage (one of discovery / exploration / experiments / writing / rebuttal / submission)last_updated (today's date in ISO format)If you don't know a field, leave it empty ("" or []). Do not guess
research questions, hypotheses, or claims.
.research/project_manifest.yml
(and N other files). Future agents loading the research-project-orienter
skill can now orient themselves without re-reading the whole repo."After writing the files, print a 5-line summary:
[research-context-compressor]
Wrote: .research/project_manifest.yml (3 datasets, 2 entrypoints)
Wrote: .research/experiment_matrix.yml (2 experiments)
Wrote: .research/data_dictionary.yml (3 datasets)
Open questions surfaced: 2 — see .research/open_questions.md
Refresh later: ask "compress this project context" again.
.paper/ — that's paper-memory-builder's job..research/literature_matrix.md — that's
literature-triage-matrix's job..research_hub/ — that's research-hub's internal cache,
managed by the CLI..research/open_questions.md instead.research_question empty and add a question to open_questions.md.