create-academic-research 0.1.3 → 0.1.4

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
@@ -166,8 +166,8 @@ Releases are tag-driven. Update `package.json` and `package-lock.json`, commit
166
166
  the change, create `vX.Y.Z`, and push the tag:
167
167
 
168
168
  ```bash
169
- git tag -a v0.1.3 -m "v0.1.3"
170
- git push origin main v0.1.3
169
+ git tag -a v0.1.4 -m "v0.1.4"
170
+ git push origin main v0.1.4
171
171
  ```
172
172
 
173
173
  Once the GitHub repository is public, the release workflow validates the tag
package/dist/src/cli.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  type CliMode = "create" | "lifecycle";
2
2
  export declare function main(argv?: string[], mode?: CliMode): Promise<number>;
3
+ export declare function formatInteractiveCreateGuide(): string;
3
4
  export {};
package/dist/src/cli.js CHANGED
@@ -16,8 +16,8 @@ const MCP_FLAGS = flagSchema(["help"], ["root", "agent"]);
16
16
  export async function main(argv = process.argv.slice(2), mode = "create") {
17
17
  try {
18
18
  if (mode === "create")
19
- return createMain(argv);
20
- return lifecycleMain(argv);
19
+ return await createMain(argv);
20
+ return await lifecycleMain(argv);
21
21
  }
22
22
  catch (error) {
23
23
  console.error(error instanceof Error ? error.message : String(error));
@@ -61,7 +61,7 @@ async function createMain(argv) {
61
61
  : undefined;
62
62
  const installMcpToolsLock = flagBool(parsed.flags, "install-mcp-tools") ? true : undefined;
63
63
  const answers = interactive
64
- ? await askCreateOptions(defaults, {
64
+ ? await askInteractiveCreateOptions(defaults, {
65
65
  installSkills: installSkillsLock,
66
66
  installMcpTools: installMcpToolsLock
67
67
  })
@@ -83,6 +83,10 @@ async function createMain(argv) {
83
83
  console.log("Next: cd into the project and run `npx academic-research doctor`.");
84
84
  return 0;
85
85
  }
86
+ async function askInteractiveCreateOptions(defaults, locks) {
87
+ console.log(formatInteractiveCreateGuide());
88
+ return askCreateOptions(defaults, locks);
89
+ }
86
90
  async function lifecycleMain(argv) {
87
91
  const command = argv[0] ?? "help";
88
92
  if (command === "--help" || command === "-h") {
@@ -388,6 +392,27 @@ function mcpInstallMode(installCommand, runtimeCommand) {
388
392
  return installCommand;
389
393
  return runtimeCommand ? "runtime-only" : "manual";
390
394
  }
395
+ export function formatInteractiveCreateGuide() {
396
+ const presetLines = Object.entries(AGENT_STACK.presets).map(([name, preset]) => ` ${name.padEnd(10)} ${preset.description}`);
397
+ return [
398
+ "Setup choices:",
399
+ "",
400
+ "Capability presets:",
401
+ ...presetLines,
402
+ "",
403
+ "Agent target:",
404
+ " universal Default. Installs one shared project-local .agents/skills copy.",
405
+ " codex Codex-specific project-local skill install.",
406
+ " auto Lets the upstream skills CLI detect agents; may install to multiple agent loaders.",
407
+ "",
408
+ "Skill and MCP behavior:",
409
+ " Skills are copied into the project, not installed globally.",
410
+ " MCP records are written into configs/capabilities.yaml and docs/agent/generated/.",
411
+ " MCP installers are optional and run only finite installer commands.",
412
+ " runtime-only MCP servers are configured for the MCP client but have no install step.",
413
+ ""
414
+ ].join("\n");
415
+ }
391
416
  function printCreateHelp() {
392
417
  console.log([
393
418
  "Usage: create-academic-research <project-name> [options]",
@@ -92,7 +92,7 @@ export async function createProject(options) {
92
92
  const preset = options.preset ?? "default";
93
93
  const agent = options.agent ?? DEFAULT_AGENT;
94
94
  if (!AGENT_STACK.presets[preset]) {
95
- throw new Error(`unknown capability preset: ${preset}`);
95
+ throw new Error(`unknown capability preset: ${preset}. Expected one of: ${Object.keys(AGENT_STACK.presets).join(", ")}`);
96
96
  }
97
97
  await mkdir(dirname(target), { recursive: true });
98
98
  await copyDirectory(templateRoot, target);
@@ -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.3";
208
+ const packageSpec = process.env.CREATE_ACADEMIC_RESEARCH_PACKAGE_SPEC ?? existingSpec ?? "0.1.4";
209
209
  data.name = slug;
210
210
  data.devDependencies = {
211
211
  ...(data.devDependencies ?? {}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-academic-research",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Create and manage agent-ready academic research repositories.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -12,6 +12,6 @@
12
12
  "mcp:doctor": "academic-research mcp doctor"
13
13
  },
14
14
  "devDependencies": {
15
- "create-academic-research": "^0.1.3"
15
+ "create-academic-research": "0.1.4"
16
16
  }
17
17
  }