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 +33 -6
- package/dist/src/project.js +10 -1
- package/package.json +10 -3
- package/template/_gitignore +62 -0
- package/template/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
# Create Academic Research
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/create-academic-research)
|
|
4
|
+
[](https://github.com/VincenzoImp/create-academic-research/actions/workflows/validate.yml)
|
|
5
|
+
[](https://github.com/VincenzoImp/create-academic-research/actions/workflows/release.yml)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
3
8
|
Create agent-ready academic research repositories with one command.
|
|
4
9
|
|
|
5
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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.
|
|
233
|
-
git push origin main v0.1.
|
|
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
|
package/dist/src/project.js
CHANGED
|
@@ -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.
|
|
4
|
-
"description": "
|
|
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
|
-
"
|
|
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
|