create-academic-research 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,19 @@
1
1
  # Create Academic Research
2
2
 
3
+ [![npm](https://img.shields.io/npm/v/create-academic-research)](https://www.npmjs.com/package/create-academic-research)
4
+ [![Validate](https://github.com/VincenzoImp/create-academic-research/actions/workflows/validate.yml/badge.svg)](https://github.com/VincenzoImp/create-academic-research/actions/workflows/validate.yml)
5
+ [![Release](https://github.com/VincenzoImp/create-academic-research/actions/workflows/release.yml/badge.svg)](https://github.com/VincenzoImp/create-academic-research/actions/workflows/release.yml)
6
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
+
3
8
  Create agent-ready academic research repositories with one command.
4
9
 
5
- From the npm registry:
10
+ `create-academic-research` scaffolds a serious research workspace: source
11
+ ledgers, SOTA files, citation audit tables, experiment records, reproducibility
12
+ docs, durable wiki/log memory, project-local skills, and MCP setup for scholarly
13
+ search. The template is discipline-general and especially strong for computer
14
+ science research.
15
+
16
+ ## Quickstart
6
17
 
7
18
  ```bash
8
19
  npm create academic-research@latest my-project
@@ -23,9 +34,16 @@ From GitHub:
23
34
  npx --yes github:VincenzoImp/create-academic-research my-project
24
35
  ```
25
36
 
26
- The generator creates a complete research repository, personalizes the project
27
- name and Python package, configures project-local skills, writes MCP records,
28
- and prepares a durable wiki/log structure for agentic academic work.
37
+ ## What It Creates
38
+
39
+ | Area | Generated Support |
40
+ |---|---|
41
+ | Sources | PDFs, derived Markdown, metadata, BibTeX, conversion ledger, source ledger. |
42
+ | Literature Review | Search strategy, screening decisions, literature matrix, SOTA synthesis, gaps, PRISMA flow. |
43
+ | Agent Memory | `AGENTS.md`, capability profile, MCP setup docs, generated MCP snippets, wiki index/log/templates. |
44
+ | Reproducibility | Python package scaffold, tests, experiment registry, output folders, artifact checklist. |
45
+ | Skills | Project-local installation flow for `VincenzoImp/academic-research-skills`. |
46
+ | MCP | Conservative default records for scholarly discovery plus documented optional integrations. |
29
47
 
30
48
  The wizard is discipline-general: it creates a clean structure for academic
31
49
  research projects in any field. Its companion skill stack gives first-class
@@ -40,6 +58,15 @@ a specific target recognized by the `skills` CLI. Run
40
58
  `npx academic-research agents list` inside a generated project to see every
41
59
  supported target and alias.
42
60
 
61
+ ## When To Use It
62
+
63
+ Use this when starting or cleaning up an academic research project that needs
64
+ evidence tracking, literature-review discipline, repeatable experiments, paper
65
+ writing support, or LLM-agent collaboration. It is not a paper generator and it
66
+ does not replace methodological judgment; it gives the repository enough
67
+ structure for serious research work to compound instead of scattering across
68
+ chat history, notebooks, PDFs, and ad hoc folders.
69
+
43
70
  ## Default Experience
44
71
 
45
72
  By default, the wizard:
@@ -229,8 +256,8 @@ Releases are tag-driven. Update `package.json` and `package-lock.json`, commit
229
256
  the change, create `vX.Y.Z`, and push the tag:
230
257
 
231
258
  ```bash
232
- git tag -a v0.1.10 -m "v0.1.10"
233
- git push origin main v0.1.10
259
+ git tag -a v0.1.12 -m "v0.1.12"
260
+ git push origin main v0.1.12
234
261
  ```
235
262
 
236
263
  Once the GitHub repository is public, the release workflow validates the tag
@@ -1,4 +1,4 @@
1
- import { mkdir, readFile, writeFile } from "node:fs/promises";
1
+ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
2
2
  import { basename, dirname, join, resolve } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import YAML from "yaml";
@@ -97,6 +97,7 @@ export async function createProject(options) {
97
97
  }
98
98
  await mkdir(dirname(target), { recursive: true });
99
99
  await copyDirectory(templateRoot, target);
100
+ await writeGeneratedGitignore(target);
100
101
  await personalizeProject(target, { title, slug, packageName, profile: options.profile ?? "academic-general" });
101
102
  await writeGeneratedPackageJson(target, { slug });
102
103
  await writeAgentStack(target);
@@ -130,6 +131,7 @@ export async function doctorProject(root) {
130
131
  const errors = [];
131
132
  const required = [
132
133
  "README.md",
134
+ ".gitignore",
133
135
  ".env.example",
134
136
  "package.json",
135
137
  "pyproject.toml",
@@ -227,6 +229,13 @@ async function writeGeneratedPackageJson(root, { slug, preserveExistingSpec = fa
227
229
  };
228
230
  await writeJson(path, data);
229
231
  }
232
+ async function writeGeneratedGitignore(root) {
233
+ const source = join(root, "_gitignore");
234
+ if (await exists(source)) {
235
+ await writeFile(join(root, ".gitignore"), await readFile(source, "utf8"), "utf8");
236
+ await rm(source);
237
+ }
238
+ }
230
239
  async function currentPackageVersion() {
231
240
  const packageJson = await readJson(join(packageRoot, "package.json"));
232
241
  if (!packageJson.version) {
package/package.json CHANGED
@@ -1,17 +1,24 @@
1
1
  {
2
2
  "name": "create-academic-research",
3
- "version": "0.1.10",
4
- "description": "Create and manage agent-ready academic research repositories.",
3
+ "version": "0.1.12",
4
+ "description": "Scaffold agent-ready academic research repositories with SOTA, source ledgers, wiki memory, MCP setup, and project-local skills.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "author": "Vincenzo Imperati",
8
8
  "keywords": [
9
9
  "academic-research",
10
+ "academic-writing",
11
+ "arxiv",
12
+ "citation-management",
10
13
  "research-project",
14
+ "research-scaffold",
11
15
  "agent-skills",
16
+ "llm-agents",
12
17
  "mcp",
13
18
  "literature-review",
14
- "reproducibility"
19
+ "open-science",
20
+ "reproducibility",
21
+ "sota"
15
22
  ],
16
23
  "repository": {
17
24
  "type": "git",
@@ -0,0 +1,62 @@
1
+ .DS_Store
2
+ node_modules/
3
+ dist/
4
+ .venv/
5
+ __pycache__/
6
+ *.py[cod]
7
+ *.egg-info/
8
+ build/
9
+ .mypy_cache/
10
+ .pytest_cache/
11
+ .ruff_cache/
12
+ .coverage
13
+ htmlcov/
14
+ data/raw/**
15
+ !data/raw/
16
+ !data/raw/.gitkeep
17
+ data/interim/**
18
+ !data/interim/
19
+ !data/interim/.gitkeep
20
+ data/processed/**
21
+ !data/processed/
22
+ !data/processed/.gitkeep
23
+ data/external/**
24
+ !data/external/
25
+ !data/external/.gitkeep
26
+ outputs/**
27
+ !outputs/
28
+ !outputs/**/
29
+ !outputs/**/.gitkeep
30
+ analysis_outputs/**
31
+ !analysis_outputs/
32
+ !analysis_outputs/.gitkeep
33
+ debug_outputs/**
34
+ !debug_outputs/
35
+ !debug_outputs/.gitkeep
36
+ repro_outputs/**
37
+ !repro_outputs/
38
+ !repro_outputs/.gitkeep
39
+ train_outputs/**
40
+ !train_outputs/
41
+ !train_outputs/.gitkeep
42
+ explore_outputs/**
43
+ !explore_outputs/
44
+ !explore_outputs/.gitkeep
45
+ artifacts/releases/**
46
+ !artifacts/releases/
47
+ !artifacts/releases/.gitkeep
48
+ artifacts/data/**
49
+ !artifacts/data/
50
+ !artifacts/data/.gitkeep
51
+ artifacts/models/**
52
+ !artifacts/models/
53
+ !artifacts/models/.gitkeep
54
+ artifacts/cache/**
55
+ !artifacts/cache/
56
+ !artifacts/cache/.gitkeep
57
+ docs/agent/generated/*.local.json
58
+ .env
59
+ .env.*
60
+ !.env.example
61
+ !.gitkeep
62
+ !README.md
@@ -17,6 +17,6 @@
17
17
  "mcp:probe": "academic-research mcp probe"
18
18
  },
19
19
  "devDependencies": {
20
- "create-academic-research": "0.1.10"
20
+ "create-academic-research": "0.1.12"
21
21
  }
22
22
  }