psyclaw 0.27.14 → 0.27.18

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.
Files changed (71) hide show
  1. package/README.md +16 -7
  2. package/dist/apps/panel/index.html +8 -7
  3. package/dist/src/adapters/pi/extension.js +424 -175
  4. package/dist/src/adapters/pi/extension.js.map +1 -1
  5. package/dist/src/analysis/hooks.js +3 -3
  6. package/dist/src/analysis/hooks.js.map +1 -1
  7. package/dist/src/analysis/pre-registration.d.ts +5 -4
  8. package/dist/src/analysis/pre-registration.js +3 -3
  9. package/dist/src/analysis/pre-registration.js.map +1 -1
  10. package/dist/src/branding.d.ts +1 -1
  11. package/dist/src/branding.js +17 -12
  12. package/dist/src/branding.js.map +1 -1
  13. package/dist/src/chat.js +9 -0
  14. package/dist/src/chat.js.map +1 -1
  15. package/dist/src/cli.js +1 -18
  16. package/dist/src/cli.js.map +1 -1
  17. package/dist/src/index.d.ts +1 -0
  18. package/dist/src/index.js +1 -0
  19. package/dist/src/index.js.map +1 -1
  20. package/dist/src/orchestration/contracts.d.ts +4 -1
  21. package/dist/src/panel/events.js +28 -1
  22. package/dist/src/panel/events.js.map +1 -1
  23. package/dist/src/panel/extension.d.ts +1 -1
  24. package/dist/src/panel/extension.js +16 -1
  25. package/dist/src/panel/extension.js.map +1 -1
  26. package/dist/src/panel/projection.d.ts +1 -1
  27. package/dist/src/panel/projection.js +30 -12
  28. package/dist/src/panel/projection.js.map +1 -1
  29. package/dist/src/panel/server.d.ts +12 -0
  30. package/dist/src/panel/server.js +104 -2
  31. package/dist/src/panel/server.js.map +1 -1
  32. package/dist/src/project/approvals.d.ts +8 -0
  33. package/dist/src/project/approvals.js +6 -7
  34. package/dist/src/project/approvals.js.map +1 -1
  35. package/dist/src/project/bootstrap.d.ts +0 -17
  36. package/dist/src/project/bootstrap.js +1 -87
  37. package/dist/src/project/bootstrap.js.map +1 -1
  38. package/dist/src/project/hitl.d.ts +4 -1
  39. package/dist/src/project/hitl.js +8 -5
  40. package/dist/src/project/hitl.js.map +1 -1
  41. package/dist/src/research/brief.js +1 -1
  42. package/dist/src/research/brief.js.map +1 -1
  43. package/dist/src/research/decision.d.ts +46 -0
  44. package/dist/src/research/decision.js +85 -0
  45. package/dist/src/research/decision.js.map +1 -0
  46. package/dist/src/style/cli-ui.js +2 -3
  47. package/dist/src/style/cli-ui.js.map +1 -1
  48. package/dist/src/tui/skill-manager.d.ts +1 -0
  49. package/dist/src/tui/skill-manager.js +6 -1
  50. package/dist/src/tui/skill-manager.js.map +1 -1
  51. package/dist/src/wizard.js +16 -7
  52. package/dist/src/wizard.js.map +1 -1
  53. package/dist/src/workflows/expert-review-runner.js +4 -6
  54. package/dist/src/workflows/expert-review-runner.js.map +1 -1
  55. package/dist/src/workflows/institutional-fulltext.js +3 -3
  56. package/dist/src/workflows/institutional-fulltext.js.map +1 -1
  57. package/dist/src/workflows/publish.js +3 -2
  58. package/dist/src/workflows/publish.js.map +1 -1
  59. package/dist/src/workflows/spec.js +1 -1
  60. package/dist/src/workflows/spec.js.map +1 -1
  61. package/dist/src/workflows/writing-review.js +40 -7
  62. package/dist/src/workflows/writing-review.js.map +1 -1
  63. package/package.json +4 -2
  64. package/scripts/psyclaw.mjs +27 -0
  65. package/scripts/rebrand-pi.mjs +77 -16
  66. package/skills/core/academic-grill/SKILL.md +9 -1
  67. package/skills/core/citation-audit/SKILL.md +2 -0
  68. package/skills/core/research-brief/SKILL.md +6 -0
  69. package/skills/core/research-intake/SKILL.md +1 -1
  70. package/skills/recommended/catalog.json +32 -31
  71. package/skills/recommended/mcp-catalog.json +13 -1
@@ -57,10 +57,11 @@ export async function publishManuscript(root, options = {}) {
57
57
  if (!citationAudit.ok) {
58
58
  const missing = citationAudit.missingPdfs.map((item) => `${item.doi} -> ${item.doiUrl}(下载到 ${item.expectedPath})`);
59
59
  throw new Error([
60
- "论文发布已被引用证据门禁阻断。",
61
- citationAudit.citedDois.length === 0 ? "尚未登记任何正文引用。" : "",
60
+ "论文暂不适合定稿:参考文献核对尚未完成。",
61
+ citationAudit.citedDois.length === 0 ? "尚未登记正文引用及其来源。" : "",
62
62
  citationAudit.missingVerification.length ? `未完成双源核验:${citationAudit.missingVerification.join(", ")}` : "",
63
63
  missing.length ? `本地缺少引用论文 PDF:${missing.join(";")}` : "",
64
+ "请补齐后重新导出;当前分析报告仍可单独导出,但不能标为正式论文。",
64
65
  ].filter(Boolean).join(" "));
65
66
  }
66
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/workflows/publish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/workflows/publish.ts"],"names":[],"mappings":"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"}
@@ -132,7 +132,7 @@ export async function finalizeWorkflow(root, workflow, options) {
132
132
  ? ["outputs", "output index", "manifest", "verdict"]
133
133
  : ["manifest", "verdict"],
134
134
  blocked: blocked.map((gate) => gate.reason),
135
- nextSteps: blocked.length === 0 ? ["human review before external use"] : ["resolve blocked workflow gates"],
135
+ nextSteps: blocked.length === 0 ? ["review before external use"] : ["repair the reported workflow or evidence gaps and rerun verification"],
136
136
  verificationCommands: ["pnpm typecheck", "pnpm test"],
137
137
  generatedAt: new Date().toISOString(),
138
138
  });
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/workflows/spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/workflows/spec.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import { checkEvidenceSufficiency } from "../core/evidence-policy.js";
2
2
  import { loadLedger, readProject } from "../research/ledger.js";
3
3
  import { allParadigms, finalizeWorkflow } from "./spec.js";
4
4
  import { allocateProjectVersion } from "../project/versions.js";
5
+ import { readManuscript } from "../project/manuscript.js";
6
+ import { checkCitations, listReferences } from "../core/references.js";
5
7
  export const writingReviewSpec = {
6
8
  id: "writing-review",
7
9
  version: "1.0.0",
@@ -16,9 +18,15 @@ export const writingReviewSpec = {
16
18
  };
17
19
  const CAUSAL_PATTERN = /\b(?:causes?|leads? to|determines?|increases?|decreases?|drives?|improves?)\b/i;
18
20
  const CONFIRMATORY_PATTERN = /\b(?:proves?|proven|established)\b/i;
21
+ const INTERNAL_PROSE_PATTERN = /\b(?:Claim|Evidence|ledger|gate|receipt|verifier|blocked outcome)\b|证据账本|受阻结局|门禁阻断|质量审计/iu;
22
+ function abstractText(markdown) {
23
+ const match = markdown.match(/(?:^|\n)#{1,3}\s*(?:摘要|Abstract)\s*\n([\s\S]*?)(?=\n#{1,3}\s|$)/i);
24
+ return match?.[1]?.trim() ?? "";
25
+ }
19
26
  export async function runWritingReview(root) {
20
27
  const project = await readProject(root);
21
28
  const ledger = await loadLedger(root);
29
+ const [manuscript, references] = await Promise.all([readManuscript(root), listReferences(root)]);
22
30
  const gates = checkEvidenceSufficiency({ ...ledger, paradigm: project.paradigm });
23
31
  const version = await allocateProjectVersion(root, "manuscript-revision", `writing-review:${Date.now()}`);
24
32
  const gateByClaim = new Map(gates.map((gate) => [gate.claimIds?.[0], gate]));
@@ -30,7 +38,7 @@ export async function runWritingReview(root) {
30
38
  severity: "block",
31
39
  rule: "unsupported-claim-asserted-as-supported",
32
40
  claimId: claim.id,
33
- message: `claim ${claim.id} is marked supported but fails its evidence gate`,
41
+ message: "这项研究陈述目前缺少足够且可定位的来源支持;请补充材料,或缩小表述范围并说明不确定性。",
34
42
  });
35
43
  }
36
44
  if (claim.kind !== "result" && CAUSAL_PATTERN.test(claim.text)) {
@@ -38,7 +46,7 @@ export async function runWritingReview(root) {
38
46
  severity: "warn",
39
47
  rule: "causal-language-without-result-artifact",
40
48
  claimId: claim.id,
41
- message: `claim ${claim.id} uses causal language but is not backed by a result artifact`,
49
+ message: "当前研究设计不足以支持因果表述;请改写为关联性描述,或补充能够支持因果推断的设计与分析依据。",
42
50
  });
43
51
  }
44
52
  if (claim.kind === "result" && CONFIRMATORY_PATTERN.test(claim.text)) {
@@ -46,7 +54,32 @@ export async function runWritingReview(root) {
46
54
  severity: "warn",
47
55
  rule: "confirmatory-language",
48
56
  claimId: claim.id,
49
- message: `claim ${claim.id} asserts a proof or established fact; prefer uncertainty-qualified language`,
57
+ message: "这项结果被写成了已经证实的事实;请结合效应大小、不确定性和研究设计边界调整措辞。",
58
+ });
59
+ }
60
+ }
61
+ if (manuscript.exists && manuscript.markdown.trim()) {
62
+ const citationCheck = checkCitations(manuscript.markdown, references);
63
+ if (citationCheck.unmatched > 0) {
64
+ findings.push({
65
+ severity: "warn",
66
+ rule: "in-text-reference-mismatch",
67
+ message: `正文中有 ${citationCheck.unmatched} 组作者—年份引文未能与已核验的参考文献记录对应;请逐项核对作者、年份、DOI 和文末条目。`,
68
+ });
69
+ }
70
+ if (INTERNAL_PROSE_PATTERN.test(manuscript.markdown)) {
71
+ findings.push({
72
+ severity: "warn",
73
+ rule: "internal-workflow-language-in-manuscript",
74
+ message: "正文含有系统内部校验术语;请按学科语境改写为研究陈述、证据来源、质量检查、结果指标、所需软件或无法分析等自然表达。",
75
+ });
76
+ }
77
+ const abstract = abstractText(manuscript.markdown);
78
+ if (/SHA-?256|文件哈希|(?:缺失|损坏).{0,20}(?:列|字段).{0,40}(?:[,,、;;].*){2,}/iu.test(abstract)) {
79
+ findings.push({
80
+ severity: "warn",
81
+ rule: "abstract-implementation-detail",
82
+ message: "摘要包含文件指纹或较细的字段级数据质量信息;请只保留总体数据质量及其对分析的影响,并把完整诊断移至方法或补充材料。",
50
83
  });
51
84
  }
52
85
  }
@@ -58,13 +91,13 @@ export async function runWritingReview(root) {
58
91
  suggestions: findings.map((finding) => ({ severity: finding.severity, rule: finding.rule, ...(finding.claimId ? { claimId: finding.claimId } : {}), suggestion: finding.message })),
59
92
  };
60
93
  const markdown = [
61
- `# Writing Review ${version}`,
94
+ `# 写作评审 ${version}`,
62
95
  "",
63
- `Research goal: ${project.goal}`,
96
+ `研究目标:${project.goal}`,
64
97
  "",
65
- "## Findings",
98
+ "## 修改建议",
66
99
  "",
67
- ...(findings.length ? findings.map((finding) => `- [${finding.severity}] ${finding.rule}: ${finding.message}`) : ["- None"]),
100
+ ...(findings.length ? findings.map((finding) => `- ${finding.severity === "block" ? "需优先修改" : "建议修改"}:${finding.message}`) : ["- 暂未发现需要修改的问题。"]),
68
101
  "",
69
102
  ].join("\n");
70
103
  return finalizeWorkflow(root, writingReviewSpec, {
@@ -1 +1 @@
1
- {"version":3,"file":"writing-review.js","sourceRoot":"","sources":["../../../src/workflows/writing-review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writing-review.js","sourceRoot":"","sources":["../../../src/workflows/writing-review.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "psyclaw",
3
- "version": "0.27.14",
3
+ "version": "0.27.18",
4
4
  "description": "A standalone, evidence-grounded social-science research agent with research contracts, evidence gates, and recoverable workflows",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -17,12 +17,13 @@
17
17
  "registry": "https://registry.npmjs.org/"
18
18
  },
19
19
  "bin": {
20
- "psyclaw": "dist/src/cli.js"
20
+ "psyclaw": "scripts/psyclaw.mjs"
21
21
  },
22
22
  "files": [
23
23
  "dist/src",
24
24
  "dist/apps/panel/index.html",
25
25
  "skills",
26
+ "scripts/psyclaw.mjs",
26
27
  "scripts/rebrand-pi.mjs"
27
28
  ],
28
29
  "engines": {
@@ -55,6 +56,7 @@
55
56
  "eval:modules": "tsx evals/modules.ts",
56
57
  "rebrand": "node scripts/rebrand-pi.mjs",
57
58
  "check:branding": "node scripts/check-branding.mjs",
59
+ "release:push": "node scripts/release-push.mjs",
58
60
  "prepublishOnly": "pnpm check:branding && pnpm build"
59
61
  },
60
62
  "dependencies": {
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { rebrandPiRuntime } from "./rebrand-pi.mjs";
6
+
7
+ try {
8
+ // Keep PsyClaw's bundled runtime isolated from a separately installed Pi.
9
+ // Set both names because the locked runtime derives its preferred variable
10
+ // from the branded app name, while older/bundled entrypoints may still read
11
+ // Pi's legacy variable. Neither path may fall back to ~/.pi.
12
+ const agentDir = process.env.PSYCLAW_CODING_AGENT_DIR || join(homedir(), ".psyclaw", "agent");
13
+ const sessionDir = process.env.PSYCLAW_CODING_AGENT_SESSION_DIR || join(agentDir, "sessions");
14
+ process.env.PSYCLAW_CODING_AGENT_DIR = agentDir;
15
+ process.env.PSYCLAW_CODING_AGENT_SESSION_DIR = sessionDir;
16
+ process.env.PI_CODING_AGENT_DIR = agentDir;
17
+ process.env.PI_CODING_AGENT_SESSION_DIR = sessionDir;
18
+
19
+ // Pi reads its application name and config directory while its modules are
20
+ // first imported. Prepare the locked runtime before loading PsyClaw's CLI so
21
+ // a clean first launch cannot create the legacy ~/.pi directory.
22
+ await rebrandPiRuntime({ quiet: true });
23
+ await import("../dist/src/cli.js");
24
+ } catch (error) {
25
+ process.stderr.write(`PsyClaw could not start: ${error instanceof Error ? error.message : String(error)}\n`);
26
+ process.exitCode = 1;
27
+ }
@@ -13,7 +13,7 @@
13
13
  import { execFile } from "node:child_process";
14
14
  import { readFile, rename, rm, writeFile } from "node:fs/promises";
15
15
  import { randomUUID } from "node:crypto";
16
- import { basename, dirname, join } from "node:path";
16
+ import { basename, dirname, join, resolve } from "node:path";
17
17
  import { fileURLToPath } from "node:url";
18
18
 
19
19
  const NAME = "PsyClaw";
@@ -272,6 +272,31 @@ const MODE_PATCHES = [
272
272
  old: 'then restart pi.',
273
273
  next: 'then restart PsyClaw.',
274
274
  },
275
+ {
276
+ old: `if (text === "/login" || text.startsWith("/login ")) {
277
+ const providerRef = text.startsWith("/login ") ? text.slice(7).trim() : undefined;
278
+ this.editor.setText("");
279
+ await this.handleLoginCommand(providerRef);
280
+ return;
281
+ }`,
282
+ next: `if (text === "/login" || text.startsWith("/login ")) {
283
+ this.editor.setText("");
284
+ this.showWarning("PsyClaw 已统一隐藏底层登录命令。请使用 /provider 配置或切换模型。");
285
+ return;
286
+ }`,
287
+ },
288
+ {
289
+ old: `if (text === "/logout") {
290
+ this.showOAuthSelector("logout");
291
+ this.editor.setText("");
292
+ return;
293
+ }`,
294
+ next: `if (text === "/logout") {
295
+ this.editor.setText("");
296
+ this.showWarning("PsyClaw 已统一隐藏底层退出命令。请使用 /provider 管理模型配置。");
297
+ return;
298
+ }`,
299
+ },
275
300
  ];
276
301
 
277
302
  async function patchPackageJson(pkgPath) {
@@ -361,6 +386,30 @@ const SETTINGS_PATCHES = [
361
386
  },
362
387
  ];
363
388
 
389
+ // PsyClaw owns provider setup through /provider. Keep Pi's authentication
390
+ // implementation available underneath, but do not expose its lower-level
391
+ // /login and /logout commands in autocomplete or command help.
392
+ const HIDDEN_PI_COMMANDS = ["login", "logout"];
393
+
394
+ async function applySlashCommandPatches(slashCommandsPath) {
395
+ let content = await readFile(slashCommandsPath, "utf8");
396
+ const applied = [];
397
+ for (const name of HIDDEN_PI_COMMANDS) {
398
+ const commandPattern = new RegExp(
399
+ `^\\s*\\{ name: "${name}", description: [^\\n]+\\},\\r?\\n`,
400
+ "m",
401
+ );
402
+ if (commandPattern.test(content)) {
403
+ content = content.replace(commandPattern, "");
404
+ applied.push(`hide /${name}`);
405
+ }
406
+ }
407
+ if (applied.length > 0) {
408
+ await atomicReplace(slashCommandsPath, content, true);
409
+ }
410
+ return applied;
411
+ }
412
+
364
413
  async function applySettingsPatches(settingsManagerPath) {
365
414
  let content = await readFile(settingsManagerPath, "utf8");
366
415
  const applied = [];
@@ -376,33 +425,45 @@ async function applySettingsPatches(settingsManagerPath) {
376
425
  return applied;
377
426
  }
378
427
 
379
- async function main() {
428
+ export async function rebrandPiRuntime(options = {}) {
380
429
  const entry = import.meta.resolve("@earendil-works/pi-coding-agent");
381
430
  const pkgDir = dirname(dirname(fileURLToPath(entry)));
382
431
  const pkgPath = join(pkgDir, "package.json");
383
432
  const modePath = join(pkgDir, "dist", "modes", "interactive", "interactive-mode.js");
384
433
  const settingsManagerPath = join(pkgDir, "dist", "core", "settings-manager.js");
434
+ const slashCommandsPath = join(pkgDir, "dist", "core", "slash-commands.js");
385
435
 
386
436
  const pkgResult = await patchPackageJson(pkgPath);
387
437
  const applied = await applyModePatches(modePath);
388
438
  const settingsApplied = await applySettingsPatches(settingsManagerPath);
439
+ const commandApplied = await applySlashCommandPatches(slashCommandsPath);
389
440
 
390
- process.stdout.write(
391
- `psyclaw rebrand: piConfig ${pkgResult.applied ? "applied" : "already set"} · ${applied.length > 0 ? `patched ${applied.length} display string(s)` : "display strings already patched"} · ${settingsApplied.length > 0 ? `patched ${settingsApplied.length} setting default(s)` : "settings already patched"} (${pkgDir})\n`,
392
- );
393
- if (applied.length > 0) {
394
- for (const label of applied) {
395
- process.stdout.write(` - ${label}…\n`);
441
+ if (!options.quiet) {
442
+ process.stdout.write(
443
+ `psyclaw rebrand: piConfig ${pkgResult.applied ? "applied" : "already set"} · ${applied.length > 0 ? `patched ${applied.length} display string(s)` : "display strings already patched"} · ${settingsApplied.length > 0 ? `patched ${settingsApplied.length} setting default(s)` : "settings already patched"} · ${commandApplied.length > 0 ? `hidden ${commandApplied.length} Pi command(s)` : "Pi commands already filtered"} (${pkgDir})\n`,
444
+ );
445
+ if (applied.length > 0) {
446
+ for (const label of applied) {
447
+ process.stdout.write(` - ${label}…\n`);
448
+ }
396
449
  }
397
- }
398
- if (settingsApplied.length > 0) {
399
- for (const label of settingsApplied) {
400
- process.stdout.write(` - ${label}…\n`);
450
+ if (settingsApplied.length > 0) {
451
+ for (const label of settingsApplied) {
452
+ process.stdout.write(` - ${label}…\n`);
453
+ }
454
+ }
455
+ if (commandApplied.length > 0) {
456
+ for (const label of commandApplied) {
457
+ process.stdout.write(` - ${label}…\n`);
458
+ }
401
459
  }
402
460
  }
403
461
  }
404
462
 
405
- main().catch((error) => {
406
- process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
407
- process.exitCode = 1;
408
- });
463
+ const invokedPath = process.argv[1] ? resolve(process.argv[1]) : "";
464
+ if (invokedPath === fileURLToPath(import.meta.url)) {
465
+ rebrandPiRuntime().catch((error) => {
466
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
467
+ process.exitCode = 1;
468
+ });
469
+ }
@@ -8,12 +8,18 @@ license: MIT
8
8
 
9
9
  Interrogate the user's academic plan until both sides share a precise, defensible research specification. Be rigorous about the reasoning while remaining constructive toward the researcher.
10
10
 
11
+ When the user provides a dataset or topic without a mature research question, begin by doing intellectual work: inspect the available context and propose 2-4 theoretically meaningful, answerable questions or hypotheses. Briefly compare their value, feasibility, and inferential limits, recommend one, and then ask only for decisions the user genuinely needs to make.
12
+
11
13
  ## Interaction Contract
12
14
 
13
15
  - Ask exactly one substantive question per turn.
14
16
  - Give a concise recommended answer or decision with every question, including the reason and main trade-off. Clearly distinguish that recommendation from facts established by evidence.
15
17
  - Resolve upstream decisions before downstream ones. Do not ask about an analysis technique while the construct, estimand, comparison, or data-generating process is still unclear.
16
18
  - If the answer can be established from files, project state, registered evidence, code, or prior conversation, inspect those sources instead of asking the user.
19
+ - Enter a researcher decision only when at least two substantively defensible options remain after checking the available evidence and established methods, and the choice would change the research question, sample treatment, operationalization, estimand, analysis method, or interpretation. Record what evidence and methods were checked, explain why they cannot resolve the disagreement, and state the options, evidence, consequences, and your recommendation.
20
+ - Do not ask the researcher to decide software installation, dependency repair, file formatting, script debugging, reproducibility metadata, citation formatting, or a reporting omission that the agent can repair. Repair these directly inside an active `/run`, or report a concrete technical limitation without treating it as a research decision.
21
+ - A dataset supplied for analysis is exploratory by default unless the user says that hypotheses and analyses were fixed before seeing it. Do not lead with a preregistration question, do not ask for a preregistration URL, and do not imply that exploratory work is methodologically inferior. For explicitly confirmatory work, ask what was specified in advance only when that distinction affects analysis or interpretation.
22
+ - Use researcher-facing language. Keep internal terms such as Claim, Evidence, ledger, gate, audit, blocked, receipt, and dependency out of ordinary questions and proposed prose.
17
23
  - Use the user's latest answer to choose the next unresolved branch. Do not dump a static questionnaire.
18
24
  - When the user's answer creates a contradiction or leaves a consequential ambiguity, resolve it before advancing.
19
25
  - Challenge unsupported assumptions, vague constructs, convenience samples, post-hoc outcomes, causal overreach, missing uncertainty, undisclosed researcher degrees of freedom, non-falsifiable claims, and conclusions that exceed the evidence.
@@ -68,7 +74,9 @@ After the interview is complete, update the initialized project without asking f
68
74
  - `notes/research-spec.md`: the complete confirmed research specification and claims boundary;
69
75
  - `notes/decisions.md`: consequential decisions, rationale, alternatives, owner, and status;
70
76
  - `notes/plan.md`: dependency-ordered tasks derived from the confirmed specification, with inputs, outputs, approvals, status, and stop conditions;
71
- - `notes/decision_request.md`: unresolved decisions that require the researcher, or an explicit `Status: none` when there are none.
77
+ - `notes/decision_request.md`: only unresolved substantive research trade-offs that meet the decision threshold above, or an explicit `Status: none` when there are none.
78
+
79
+ When no qualifying trade-off remains, set the status in `notes/research-spec.md` and `notes/plan.md` to `ready-for-run`. Do not use `awaiting-human-approval` as a routine completion state.
72
80
 
73
81
  Preserve valid frontmatter and existing unrelated user content. Do not mark evidence, ethics approval, preregistration, data access, analysis, or review as completed unless project records establish it.
74
82
 
@@ -7,3 +7,5 @@ license: MIT
7
7
  # Citation Audit
8
8
 
9
9
  Split factual statements into Claims. Require a qualifying source and locator for every supported Claim, preserve contradictory evidence, and downgrade uncertainty instead of filling gaps. A title match, abstract-only record, or model memory is not proof of a result or causal statement.
10
+
11
+ These are internal checks. In the manuscript and normal conversation, use natural disciplinary prose rather than exposing Claim/Evidence IDs, ledgers, gates, audit labels, or blocked states. For the final reference check, enforce bidirectional matching between in-text citations and the reference list, consistent target style, correct work type, complete verified metadata, stable DOI, alphabetical or numbered ordering as required, and hanging indentation where the style requires it.
@@ -9,3 +9,9 @@ license: MIT
9
9
  Follow intake -> capture -> ledger -> audit -> write -> handoff. Write only from accepted evidence and label gaps, contradictions, exploratory claims, and human decisions. Include a provenance manifest, verification verdict, and executable handoff; do not invent citations, data, methods, or numerical results.
10
10
 
11
11
  For manuscript outputs, use continuous academic paragraphs rather than bullet-heavy notes. Apply a neutral submission format: Times New Roman for Latin text, SimSun/宋体 fallback for Chinese, black headings and body text, and no decorative color. Before finalization, ensure each factual or literature-dependent paragraph has a verified citation; if sources are insufficient, retrieve more or mark the section uncertain instead of fabricating references.
12
+
13
+ Keep internal workflow language out of reader-facing prose. Translate Claim/Evidence checks into ordinary scholarly reasoning and avoid bureaucratic terms such as audit, blocked outcome, dependency, receipt, or gate. In Chinese psychology writing, prefer context-specific terms such as research statement, supporting literature, quality check, outcome variable or indicator, required software, and unavailable analysis. Remove stacked modifiers and repeated methodological disclaimers; state each necessary limitation once in the most relevant section.
14
+
15
+ Follow the target venue's abstract instructions exactly. Without a supplied venue format, write one concise paragraph covering purpose, method, principal results, and conclusion; do not add explicit four-part labels by default. Keep column-level data diagnostics, hashes, implementation details, and exhaustive secondary results out of the abstract. Report data quality in aggregate in the manuscript and put complete variable-level diagnostics in supplementary material.
16
+
17
+ Reference use is part of the manuscript, not a separate inventory. Apply one citation style consistently, make every in-text citation match exactly one reference entry and vice versa, preserve the publication type, and verify author order, year, title, journal or proceedings, volume, issue, pages or article number, DOI, punctuation, ordering, and hanging indent from source metadata. Never fill missing fields from memory.
@@ -6,4 +6,4 @@ license: MIT
6
6
 
7
7
  # Research Intake
8
8
 
9
- Collect the research goal, paradigm, population or corpus, time range, language and geography, exploratory versus confirmatory status, ethics constraints, and desired output. Ask for missing blocking fields before any retrieval or analysis. Keep the design card in `.psyclaw/project.json` and never infer consent or access rights.
9
+ Collect the research goal, paradigm, population or corpus, time range, language and geography, exploratory versus confirmatory status, ethics constraints, and desired output. When a dataset arrives without a question, inspect its documented variables and context, propose 2-4 valuable and answerable research directions, and recommend one before asking the researcher to decide. Infer non-sensitive methodological defaults where the files and disciplinary conventions support them; ask only about choices that materially change the study. Treat post-data question development as exploratory, not as a failure. Discuss preregistration only for explicitly confirmatory work and never require a public link. Keep the design card in `.psyclaw/project.json` and never infer consent or access rights.
@@ -1,29 +1,10 @@
1
1
  {
2
2
  "schemaVersion": "psyclaw/recommended-skills/v1",
3
- "documentVersion": "0.6.0",
4
- "syncedAt": "2026-08-30",
3
+ "documentVersion": "0.7.0",
4
+ "syncedAt": "2026-09-03",
5
5
  "sourceDocument": "学术AI_Skill分享资料.pdf",
6
6
  "sourceRef": "local-user-curated",
7
7
  "items": [
8
- {
9
- "id": "academic-research-suite",
10
- "name": "ARS Academic Research Suite",
11
- "kind": "skill",
12
- "stage": "研究全流程",
13
- "description": "面向文献研究、论文写作、同行评审与修订的端到端 Academic Research Skills 套件。",
14
- "sourceRef": "https://github.com/Imbad0202/academic-research-skills-codex",
15
- "installHint": "安装仓库中的 skills/academic-research-suite 完整目录,目标目录根部必须是该目录的 SKILL.md。"
16
- },
17
- {
18
- "id": "nature-skills",
19
- "name": "Nature Skills Suite",
20
- "kind": "skill",
21
- "skillLayout": "collection",
22
- "stage": "研究全流程",
23
- "description": "完整安装 Nature Skills 套件,覆盖检索、精读、数据、统计、实验记录、写作、绘图、引用核验、评审回复与演示文稿等研究任务。",
24
- "sourceRef": "https://github.com/Yuan1z0825/nature-skills",
25
- "installHint": "这是多 Skill 套件。将仓库 skills 目录中的全部 nature-* Skill(包括 nature-shared)原样安装到目标目录,保留每个子目录的 SKILL.md、references、scripts、assets、tests 和相对路径;不要只挑选单个 Skill,也不要在套件根目录伪造 SKILL.md。"
26
- },
27
8
  {
28
9
  "id": "scientific-visualization",
29
10
  "name": "Scientific Visualization",
@@ -158,7 +139,7 @@
158
139
  },
159
140
  {
160
141
  "id": "journal-frontier-radar",
161
- "name": "Journal Frontier Radar(王飞)",
142
+ "name": "Journal Frontier Radar",
162
143
  "kind": "skill",
163
144
  "stage": "文献前沿",
164
145
  "description": "基于期刊文章清单开展可追溯的前沿追踪、主题映射、关键词分析和未解决问题发现。",
@@ -167,7 +148,7 @@
167
148
  },
168
149
  {
169
150
  "id": "manuscript-statistical-forensics",
170
- "name": "Manuscript Statistical Forensics(王飞)",
151
+ "name": "Manuscript Statistical Forensics",
171
152
  "kind": "skill",
172
153
  "stage": "统计审查",
173
154
  "description": "对论文 PDF 进行数值一致性、统计方法和研究完整性审查,不将单一异常直接判定为学术不端。",
@@ -176,21 +157,39 @@
176
157
  }
177
158
  ],
178
159
  "plugins": [
160
+ {
161
+ "id": "academic-research-suite-plugin",
162
+ "name": "ARS Academic Research Suite",
163
+ "kind": "plugin",
164
+ "stage": "研究全流程",
165
+ "description": "以 Plugin 方式提供 Academic Research Suite 的文献研究、写作、评审与修订能力。",
166
+ "sourceRef": "https://github.com/Imbad0202/academic-research-skills-codex",
167
+ "installHint": "使用 Pi 原生 Plugin 管理器安装;仓库同时包含 Skill,安装后按其插件说明启用。"
168
+ },
169
+ {
170
+ "id": "nature-skills-plugin",
171
+ "name": "Nature Skills Suite",
172
+ "kind": "plugin",
173
+ "stage": "研究全流程",
174
+ "description": "以 Plugin 方式提供 Nature Skills 套件,覆盖检索、精读、统计、绘图、写作和评审任务。",
175
+ "sourceRef": "https://github.com/Yuan1z0825/nature-skills",
176
+ "installHint": "使用 Pi 原生 Plugin 管理器安装完整仓库;套件内的 Skill 保持原目录结构。"
177
+ },
179
178
  {
180
179
  "id": "pingouin",
181
180
  "name": "Pingouin Statistics Plugin",
182
181
  "kind": "plugin",
183
182
  "stage": "统计分析",
184
- "description": "基于 Pingouin 的心理学统计分析插件,提供常用检验、效应量、相关和可视化辅助能力。",
185
- "sourceRef": "https://github.com/Exekiel179/psyclaw/tree/feat/lingzhi-lobster/psyclaw/skills/pingouin",
186
- "installHint": "这是 PsyClaw 仓库中的 Pingouin 统计插件说明,位于 psyclaw/skills/pingouin;作为 Plugin/统计后端接入,不要把它重新归类为推荐 Skill。"
183
+ "description": "面向心理学统计的 Pingouin Skill Plugin,包含 16 个 Skill,覆盖分析路由、数据检查、均值检验、方差分析、相关、回归与中介、非参数、分类资料、贝叶斯、多变量、信度、功效分析和 APA 风格报告。",
184
+ "sourceRef": "https://github.com/Exekiel179/pingouin-psych-stats",
185
+ "installHint": "安装完整仓库并保留 .codex-plugin、.claude-plugin、skills、references 与 scripts;安装后执行 /reload。"
187
186
  },
188
187
  {
189
188
  "id": "psych-network-css",
190
- "name": "Psych Network CSS(王飞)",
189
+ "name": "Psych Network CSS",
191
190
  "kind": "plugin",
192
191
  "stage": "网络分析",
193
- "description": "王飞仓库中的心理网络分析插件,包含 analyze 和 analyze-cross-sectional-network 等 Skill,用于横断面症状网络建模、中心性、桥接、可预测性及稳定性分析。",
192
+ "description": "心理网络分析插件,包含 analyze 和 analyze-cross-sectional-network 等 Skill,用于横断面症状网络建模、中心性、桥接、可预测性及稳定性分析。",
194
193
  "sourceRef": "https://github.com/kingfly51/psych-network-css",
195
194
  "installHint": "这是 Plugin 仓库,不是单一 Skill;安装时保留 plugins/ 下的插件结构及其 skills 子目录。"
196
195
  }
@@ -198,11 +197,13 @@
198
197
  "externalTools": [
199
198
  {
200
199
  "id": "markitdown",
201
- "name": "MarkItDown",
200
+ "name": "Microsoft MarkItDown",
202
201
  "kind": "external-tool",
202
+ "installable": true,
203
203
  "stage": "材料转换",
204
- "description": "把 PDF、Word、PPT、Excel、HTML 等转换为结构化 Markdown。它是独立 Python 工具,不作为 PsyClaw Skill 安装。",
205
- "sourceRef": "https://github.com/microsoft/markitdown"
204
+ "description": "微软开源的文档转 Markdown 工具,可处理 PDF、Word、PPT、Excel、HTML 等材料,并供文档读取类 Skill 调用。",
205
+ "sourceRef": "https://github.com/microsoft/markitdown",
206
+ "installHint": "由当前模型按微软仓库的官方说明安装 MarkItDown,并验证 markitdown 命令可用。微软仓库本身不含 SKILL.md;PsyClaw 将它作为 Skill 可调用的外部工具推荐,不冒充微软官方 Skill。"
206
207
  },
207
208
  {
208
209
  "id": "nirapost",
@@ -1,9 +1,20 @@
1
1
  {
2
2
  "schemaVersion": "psyclaw/recommended-mcp/v1",
3
- "documentVersion": "0.2.0",
3
+ "documentVersion": "0.3.0",
4
4
  "sourceDocument": "学术AI_Skill分享资料.pdf + curated research MCP review",
5
5
  "sourceRef": "user-curated",
6
6
  "items": [
7
+ {
8
+ "id": "markitdown-mcp",
9
+ "name": "Microsoft MarkItDown MCP",
10
+ "stage": "材料转换",
11
+ "description": "微软官方 MarkItDown MCP,通过本机 stdio 提供 convert_to_markdown 工具,把文件或 URI 转换为 Markdown。",
12
+ "sourceRef": "https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp",
13
+ "transport": "stdio",
14
+ "risk": "local-file-and-network-read",
15
+ "writeEffects": false,
16
+ "status": "discover-only"
17
+ },
7
18
  {
8
19
  "id": "paper-search-mcp",
9
20
  "name": "Paper Search MCP",
@@ -105,6 +116,7 @@
105
116
  }
106
117
  ],
107
118
  "installPrep": [
119
+ {"id":"markitdown-mcp","sourceKind":"pypi","ref":"latest-stable","license":"MIT","command":"python -m pip install markitdown-mcp","target":".psyclaw/mcp/markitdown-mcp.json","dependencies":["Python >=3.10","pip","markitdown-mcp"],"status":"installable","requiresApproval":true},
108
120
  {"id":"paper-search-mcp","sourceKind":"github","ref":"c8b642183bb725f0a7faec89e58b558df09079d1","license":"MIT","command":"git clone https://github.com/openags/paper-search-mcp .psyclaw/mcp-src/paper-search-mcp && git -C .psyclaw/mcp-src/paper-search-mcp checkout c8b642183bb725f0a7faec89e58b558df09079d1","target":".psyclaw/mcp/paper-search-mcp.json","dependencies":["Git","Python/uv per repository metadata"],"status":"review-required","requiresApproval":true,"blockedReason":"Verify package entrypoint and lockfile before registering a stdio server."},
109
121
  {"id":"scientific-papers-mcp","sourceKind":"github","ref":"646da8d8af653f6b833f3725bae4cafc38a9428e","license":"unknown","command":"git clone https://github.com/benedict2310/Scientific-Papers-MCP .psyclaw/mcp-src/scientific-papers-mcp && git -C .psyclaw/mcp-src/scientific-papers-mcp checkout 646da8d8af653f6b833f3725bae4cafc38a9428e","target":".psyclaw/mcp/scientific-papers-mcp.json","dependencies":["Git","repository runtime requirements"],"status":"blocked","requiresApproval":true,"blockedReason":"License metadata is not verified."},
110
122
  {"id":"pubmed-search-mcp","sourceKind":"github","ref":"master","license":"NOASSERTION","command":"git clone https://github.com/u9401066/pubmed-search-mcp .psyclaw/mcp-src/pubmed-search-mcp && git -C .psyclaw/mcp-src/pubmed-search-mcp checkout master","target":".psyclaw/mcp/pubmed-search-mcp.json","dependencies":["Git","PubMed/NCBI access configuration"],"status":"blocked","requiresApproval":true,"blockedReason":"License and immutable commit were not verified."},