create-academic-research 0.1.0 → 0.1.2
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 +24 -5
- package/dist/src/cli.js +20 -6
- package/dist/src/project.js +1 -1
- package/dist/src/stack.js +11 -6
- package/package.json +1 -1
- package/template/README.md +9 -3
- package/template/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,9 @@ Equivalent explicit form:
|
|
|
14
14
|
npx create-academic-research@latest my-project
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
Prefer the explicit `@latest` form. Some npm/npx versions reuse an older
|
|
18
|
+
cached creator when the version is omitted.
|
|
19
|
+
|
|
17
20
|
From GitHub:
|
|
18
21
|
|
|
19
22
|
```bash
|
|
@@ -41,7 +44,7 @@ specific target recognized by the `skills` CLI, such as `claude-code`,
|
|
|
41
44
|
By default, the wizard:
|
|
42
45
|
|
|
43
46
|
- creates the repository structure;
|
|
44
|
-
-
|
|
47
|
+
- installs the project-local `VincenzoImp/academic-research-skills` package;
|
|
45
48
|
- enables the scholarly MCP records for `arxiv`, `semantic-scholar`, and
|
|
46
49
|
`openalex`;
|
|
47
50
|
- writes `configs/capabilities.yaml`;
|
|
@@ -50,6 +53,10 @@ By default, the wizard:
|
|
|
50
53
|
- appends the onboarding event to `wiki/log.md`;
|
|
51
54
|
- does not install external MCP tools unless explicitly requested.
|
|
52
55
|
|
|
56
|
+
Use `--preset enhanced` when you also want the curated complementary external
|
|
57
|
+
skill bundles for agent engineering, frontend work, testing, document formats,
|
|
58
|
+
and PDF conversion.
|
|
59
|
+
|
|
53
60
|
## Non-Interactive Create
|
|
54
61
|
|
|
55
62
|
```bash
|
|
@@ -71,6 +78,7 @@ npx academic-research doctor
|
|
|
71
78
|
npx academic-research rename --title "New Title" --slug new-title --package new_title
|
|
72
79
|
npx academic-research skills presets
|
|
73
80
|
npx academic-research skills install --preset default
|
|
81
|
+
npx academic-research skills install --preset enhanced
|
|
74
82
|
npx academic-research skills list
|
|
75
83
|
npx academic-research skills status
|
|
76
84
|
npx academic-research skills remove source-ingestion
|
|
@@ -107,10 +115,10 @@ MCP commands are split by side-effect:
|
|
|
107
115
|
| `mcp list` | List known MCP servers with enabled/available status. |
|
|
108
116
|
| `mcp enabled` | List only enabled MCP server ids. |
|
|
109
117
|
| `mcp available` | List the local MCP catalog. |
|
|
110
|
-
| `mcp commands` | Print external install commands without running them. |
|
|
118
|
+
| `mcp commands` | Print finite external install commands without running them. Runtime-only `uvx`/`npx` servers may have no install command. |
|
|
111
119
|
| `mcp enable` | Enable an MCP server in project records and generated snippets. |
|
|
112
120
|
| `mcp disable` | Remove an MCP server from project records and generated snippets. |
|
|
113
|
-
| `mcp install` | Run
|
|
121
|
+
| `mcp install` | Run finite external tool install commands for selected MCP servers. It must not launch stdio MCP servers. |
|
|
114
122
|
| `mcp uninstall` | Run the external uninstall command when one exists. |
|
|
115
123
|
| `mcp doctor` | Validate enabled MCP records and generated snippets. |
|
|
116
124
|
|
|
@@ -129,6 +137,17 @@ context. They are not automatic capabilities of every raw model API.
|
|
|
129
137
|
Use `--agent <agent>` for explicit multi-tool setup; reserve `--agent '*'` for
|
|
130
138
|
cases where you intentionally want every local agent loader populated.
|
|
131
139
|
|
|
140
|
+
Preset intent:
|
|
141
|
+
|
|
142
|
+
| Preset | Intent |
|
|
143
|
+
|---|---|
|
|
144
|
+
| `minimal` | Academic research skills only, no MCP records. |
|
|
145
|
+
| `default` | Academic research skills plus core scholarly MCP records. |
|
|
146
|
+
| `enhanced` | `default` plus curated external complementary skill bundles. |
|
|
147
|
+
| `literature` | SOTA and systematic-review work with citation-library MCP records. |
|
|
148
|
+
| `writing` | Paper-writing and Overleaf-oriented work. |
|
|
149
|
+
| `full` | Broad optional connector and specialist setup. |
|
|
150
|
+
|
|
132
151
|
## Validate This Package
|
|
133
152
|
|
|
134
153
|
```bash
|
|
@@ -145,8 +164,8 @@ Releases are tag-driven. Update `package.json` and `package-lock.json`, commit
|
|
|
145
164
|
the change, create `vX.Y.Z`, and push the tag:
|
|
146
165
|
|
|
147
166
|
```bash
|
|
148
|
-
git tag -a v0.1.
|
|
149
|
-
git push origin main v0.1.
|
|
167
|
+
git tag -a v0.1.2 -m "v0.1.2"
|
|
168
|
+
git push origin main v0.1.2
|
|
150
169
|
```
|
|
151
170
|
|
|
152
171
|
Once the GitHub repository is public, the release workflow validates the tag
|
package/dist/src/cli.js
CHANGED
|
@@ -36,7 +36,7 @@ async function createMain(argv) {
|
|
|
36
36
|
return 0;
|
|
37
37
|
}
|
|
38
38
|
if (!target) {
|
|
39
|
-
|
|
39
|
+
printMissingTargetHelp();
|
|
40
40
|
return 1;
|
|
41
41
|
}
|
|
42
42
|
if (flagBool(parsed.flags, "install-skills") && flagBool(parsed.flags, "no-install-skills")) {
|
|
@@ -224,7 +224,7 @@ async function mcpCommand(argv) {
|
|
|
224
224
|
const enabled = new Set(state.mcp_servers ?? []);
|
|
225
225
|
for (const [name, server] of Object.entries(AGENT_STACK.mcp_servers)) {
|
|
226
226
|
const status = enabled.has(name) ? "enabled" : "available";
|
|
227
|
-
const installer = server.install_command
|
|
227
|
+
const installer = mcpInstallMode(server.install_command, server.command);
|
|
228
228
|
console.log(`${status}\t${name}\t${server.source_need}\t${installer}`);
|
|
229
229
|
}
|
|
230
230
|
return 0;
|
|
@@ -242,7 +242,7 @@ async function mcpCommand(argv) {
|
|
|
242
242
|
assertOnlyOptions(parsed.flags, "mcp available", []);
|
|
243
243
|
assertNoArguments(parsed.positionals, "mcp available");
|
|
244
244
|
for (const [name, server] of Object.entries(AGENT_STACK.mcp_servers)) {
|
|
245
|
-
const installer = server.install_command
|
|
245
|
+
const installer = mcpInstallMode(server.install_command, server.command);
|
|
246
246
|
console.log(`${name}\t${server.source_need}\t${installer}`);
|
|
247
247
|
}
|
|
248
248
|
return 0;
|
|
@@ -383,6 +383,11 @@ function assertOnlyOptions(flags, command, allowedOptions) {
|
|
|
383
383
|
throw new Error(`${command} does not accept ${unexpected.map((name) => `--${name}`).join(", ")}`);
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
|
+
function mcpInstallMode(installCommand, runtimeCommand) {
|
|
387
|
+
if (installCommand)
|
|
388
|
+
return installCommand;
|
|
389
|
+
return runtimeCommand ? "runtime-only" : "manual";
|
|
390
|
+
}
|
|
386
391
|
function printCreateHelp() {
|
|
387
392
|
console.log([
|
|
388
393
|
"Usage: create-academic-research <project-name> [options]",
|
|
@@ -394,16 +399,25 @@ function printCreateHelp() {
|
|
|
394
399
|
" --title <name> Project title. Default: title-cased project name.",
|
|
395
400
|
" --slug <name> Repository/package slug. Default: normalized project name.",
|
|
396
401
|
" --package <name> Python package name. Default: normalized project name.",
|
|
397
|
-
" --preset <name> Capability preset: minimal, default, literature, writing, full.",
|
|
402
|
+
" --preset <name> Capability preset: minimal, default, enhanced, literature, writing, full.",
|
|
398
403
|
" --profile <name> Project profile metadata. Default: academic-general.",
|
|
399
404
|
" --agent <name> Agent target. Default: auto-detect.",
|
|
400
405
|
" --install-skills Install project-local skills without prompting.",
|
|
401
406
|
" --no-install-skills Skip project-local skill installation.",
|
|
402
|
-
" --install-mcp-tools Run external MCP install commands after creation.",
|
|
407
|
+
" --install-mcp-tools Run finite external MCP install commands after creation.",
|
|
403
408
|
" -h, --help Show this help.",
|
|
404
409
|
" -v, --version Show package version."
|
|
405
410
|
].join("\n"));
|
|
406
411
|
}
|
|
412
|
+
function printMissingTargetHelp() {
|
|
413
|
+
console.error([
|
|
414
|
+
"Please specify the project directory.",
|
|
415
|
+
"",
|
|
416
|
+
"Usage:",
|
|
417
|
+
" npm create academic-research@latest my-research-project",
|
|
418
|
+
" npx create-academic-research@latest my-research-project"
|
|
419
|
+
].join("\n"));
|
|
420
|
+
}
|
|
407
421
|
function printLifecycleHelp() {
|
|
408
422
|
console.log([
|
|
409
423
|
"Usage: academic-research <doctor|rename|skills|mcp>",
|
|
@@ -432,7 +446,7 @@ function printMcpHelp() {
|
|
|
432
446
|
console.log([
|
|
433
447
|
"Usage: academic-research mcp <list|enabled|available|commands|enable|disable|install|uninstall|doctor> [servers...]",
|
|
434
448
|
"",
|
|
435
|
-
"Manage MCP records and
|
|
449
|
+
"Manage MCP records and finite external MCP tool installs.",
|
|
436
450
|
"",
|
|
437
451
|
"Options:",
|
|
438
452
|
" --root <path> Project root for project-state commands.",
|
package/dist/src/project.js
CHANGED
|
@@ -205,7 +205,7 @@ async function writeGeneratedPackageJson(root, { slug }) {
|
|
|
205
205
|
const path = join(root, "package.json");
|
|
206
206
|
const data = await readJson(path);
|
|
207
207
|
const existingSpec = data.devDependencies?.["create-academic-research"];
|
|
208
|
-
const packageSpec = process.env.CREATE_ACADEMIC_RESEARCH_PACKAGE_SPEC ?? existingSpec ?? "^0.1.
|
|
208
|
+
const packageSpec = process.env.CREATE_ACADEMIC_RESEARCH_PACKAGE_SPEC ?? existingSpec ?? "^0.1.2";
|
|
209
209
|
data.name = slug;
|
|
210
210
|
data.devDependencies = {
|
|
211
211
|
...(data.devDependencies ?? {}),
|
package/dist/src/stack.js
CHANGED
|
@@ -56,12 +56,17 @@ export const AGENT_STACK = {
|
|
|
56
56
|
},
|
|
57
57
|
presets: {
|
|
58
58
|
minimal: {
|
|
59
|
-
description: "
|
|
59
|
+
description: "Academic research skills only, no MCP records.",
|
|
60
60
|
skill_bundles: ["academic_research"],
|
|
61
61
|
mcp_servers: []
|
|
62
62
|
},
|
|
63
63
|
default: {
|
|
64
|
-
description: "
|
|
64
|
+
description: "Clean academic research setup with core scholarly MCP records.",
|
|
65
|
+
skill_bundles: ["academic_research"],
|
|
66
|
+
mcp_servers: ["arxiv", "semantic-scholar", "openalex"]
|
|
67
|
+
},
|
|
68
|
+
enhanced: {
|
|
69
|
+
description: "Default academic setup plus complementary agent engineering, document, frontend, testing, and doc conversion skills.",
|
|
65
70
|
skill_bundles: ["academic_research", "default_complementary", "docling"],
|
|
66
71
|
mcp_servers: ["arxiv", "semantic-scholar", "openalex"]
|
|
67
72
|
},
|
|
@@ -107,7 +112,7 @@ export const AGENT_STACK = {
|
|
|
107
112
|
"semantic-scholar": {
|
|
108
113
|
priority: "default",
|
|
109
114
|
source_need: "Semantic Scholar papers, citations, authors, and recommendations.",
|
|
110
|
-
install_command: "
|
|
115
|
+
install_command: "",
|
|
111
116
|
uninstall_command: "",
|
|
112
117
|
command: "uvx",
|
|
113
118
|
args: ["--from", "git+https://github.com/akapet00/semantic-scholar-mcp", "semantic-scholar-mcp"],
|
|
@@ -118,7 +123,7 @@ export const AGENT_STACK = {
|
|
|
118
123
|
openalex: {
|
|
119
124
|
priority: "default",
|
|
120
125
|
source_need: "OpenAlex broad scholarly graph.",
|
|
121
|
-
install_command: "
|
|
126
|
+
install_command: "",
|
|
122
127
|
uninstall_command: "",
|
|
123
128
|
command: "npx",
|
|
124
129
|
args: ["-y", "@cyanheads/openalex-mcp-server"],
|
|
@@ -140,7 +145,7 @@ export const AGENT_STACK = {
|
|
|
140
145
|
pubmed: {
|
|
141
146
|
priority: "domain-specific",
|
|
142
147
|
source_need: "PubMed and biomedical literature.",
|
|
143
|
-
install_command: "
|
|
148
|
+
install_command: "",
|
|
144
149
|
uninstall_command: "",
|
|
145
150
|
command: "npx",
|
|
146
151
|
args: ["-y", "@cyanheads/pubmed-mcp-server"],
|
|
@@ -151,7 +156,7 @@ export const AGENT_STACK = {
|
|
|
151
156
|
zotero: {
|
|
152
157
|
priority: "local-library",
|
|
153
158
|
source_need: "Zotero local library and attachments.",
|
|
154
|
-
install_command: "
|
|
159
|
+
install_command: "",
|
|
155
160
|
uninstall_command: "",
|
|
156
161
|
command: "uvx",
|
|
157
162
|
args: ["zoty", "mcp"],
|
package/package.json
CHANGED
package/template/README.md
CHANGED
|
@@ -53,6 +53,7 @@ Project-local skills and MCP records are managed with:
|
|
|
53
53
|
```bash
|
|
54
54
|
npx academic-research skills presets
|
|
55
55
|
npx academic-research skills install --preset default
|
|
56
|
+
npx academic-research skills install --preset enhanced
|
|
56
57
|
npx academic-research skills list
|
|
57
58
|
npx academic-research skills status
|
|
58
59
|
npx academic-research mcp enable arxiv semantic-scholar openalex
|
|
@@ -63,6 +64,11 @@ npx academic-research mcp install arxiv
|
|
|
63
64
|
|
|
64
65
|
`skills list` reports installed project-local skills. `skills presets` reports
|
|
65
66
|
available install presets. `mcp enable` changes project records. `mcp commands`
|
|
66
|
-
prints external install commands without running them. `mcp install`
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
prints finite external install commands without running them. `mcp install`
|
|
68
|
+
runs only finite tool installation commands; runtime-only `uvx`/`npx` MCP
|
|
69
|
+
servers may have no install step and are started later by the MCP client.
|
|
70
|
+
|
|
71
|
+
`default` installs the companion academic research skill package and keeps the
|
|
72
|
+
MCP records focused on core scholarly discovery. `enhanced` adds complementary
|
|
73
|
+
external skills for agent engineering, frontend work, testing, document
|
|
74
|
+
formats, and PDF conversion.
|