skillwiki 0.10.8 → 0.10.9

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/dist/cli.js CHANGED
@@ -2003,15 +2003,15 @@ async function patchFrontmatterStatus(filePath, extraBody) {
2003
2003
  let text;
2004
2004
  try {
2005
2005
  text = readFileSync10(filePath, "utf8");
2006
- } catch {
2007
- return;
2006
+ } catch (error) {
2007
+ return err("WRITE_FAILED", { path: filePath, stage: "read", message: String(error) });
2008
2008
  }
2009
2009
  const split = splitFrontmatter(text);
2010
2010
  if (!split.ok || !split.data.rawFrontmatter) {
2011
2011
  if (extraBody) {
2012
- await atomicWriteText(filePath, extraBody(text));
2012
+ return atomicWriteText(filePath, extraBody(text));
2013
2013
  }
2014
- return;
2014
+ return ok({ changed: false, existed: true });
2015
2015
  }
2016
2016
  let fm = split.data.rawFrontmatter;
2017
2017
  if (/^status:\s*/m.test(fm)) {
@@ -2026,13 +2026,13 @@ ${fm}`;
2026
2026
  }
2027
2027
  let body = split.data.body;
2028
2028
  if (extraBody) body = extraBody(body);
2029
- await atomicWriteText(filePath, `---
2029
+ return atomicWriteText(filePath, `---
2030
2030
  ${fm}
2031
2031
  ---
2032
2032
  ${body}`);
2033
2033
  }
2034
2034
  async function setStatusCompleted(filePath) {
2035
- await patchFrontmatterStatus(filePath);
2035
+ return patchFrontmatterStatus(filePath);
2036
2036
  }
2037
2037
  async function writeEvidence(workDir, opId, phases) {
2038
2038
  const path = join15(workDir, "evidence.md");
@@ -2050,12 +2050,18 @@ async function writeEvidence(workDir, opId, phases) {
2050
2050
  `- completed_at: ${(/* @__PURE__ */ new Date()).toISOString()}`,
2051
2051
  ""
2052
2052
  ].join("\n");
2053
- await atomicWriteText(path, body);
2053
+ return atomicWriteText(path, body);
2054
2054
  }
2055
2055
  async function markPlanComplete(workDir) {
2056
2056
  const planPath = join15(workDir, "plan.md");
2057
- if (!existsSync4(planPath)) return;
2058
- await patchFrontmatterStatus(planPath, (body) => body.replace(/- \[ \]/g, "- [x]"));
2057
+ if (!existsSync4(planPath)) return ok(null);
2058
+ return patchFrontmatterStatus(planPath, (body) => body.replace(/- \[ \]/g, "- [x]"));
2059
+ }
2060
+ function writeFailure(stage, result) {
2061
+ return {
2062
+ exitCode: ExitCode.WRITE_FAILED,
2063
+ result: result.ok ? err("WRITE_FAILED", { stage, message: "unexpected ok" }) : result
2064
+ };
2059
2065
  }
2060
2066
  async function runWorkComplete(input) {
2061
2067
  const workDirResult = resolveWorkDir(input.vault, input.workItem);
@@ -2134,9 +2140,12 @@ async function runWorkComplete(input) {
2134
2140
  advance("evidence");
2135
2141
  }
2136
2142
  if (phaseIndex(phase) <= phaseIndex("evidence")) {
2137
- await setStatusCompleted(join15(workDir, "spec.md"));
2138
- await markPlanComplete(workDir);
2139
- await writeEvidence(workDir, opId, completedPhases);
2143
+ const statusWrite = await setStatusCompleted(join15(workDir, "spec.md"));
2144
+ if (!statusWrite.ok) return writeFailure("evidence-spec", statusWrite);
2145
+ const planWrite = await markPlanComplete(workDir);
2146
+ if (!planWrite.ok) return writeFailure("evidence-plan", planWrite);
2147
+ const evidenceWrite = await writeEvidence(workDir, opId, completedPhases);
2148
+ if (!evidenceWrite.ok) return writeFailure("evidence", evidenceWrite);
2140
2149
  if (input.failAfter === "evidence") {
2141
2150
  throw new Error("simulated failure after evidence");
2142
2151
  }
@@ -2166,7 +2175,8 @@ async function runWorkComplete(input) {
2166
2175
  }
2167
2176
  if (phaseIndex(phase) <= phaseIndex("projection")) {
2168
2177
  if (!existsSync4(join15(workDir, "evidence.md"))) {
2169
- await writeEvidence(workDir, opId, completedPhases);
2178
+ const evidenceWrite = await writeEvidence(workDir, opId, completedPhases);
2179
+ if (!evidenceWrite.ok) return writeFailure("projection-evidence", evidenceWrite);
2170
2180
  }
2171
2181
  const finalCheck = await runWorkValidate({
2172
2182
  vault: input.vault,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillwiki",
3
- "version": "0.10.8",
3
+ "version": "0.10.9",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "skillwiki": "dist/cli.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillwiki",
3
- "version": "0.10.8",
3
+ "version": "0.10.9",
4
4
  "skills": "./",
5
5
  "description": "Project-aware Karpathy-style knowledge base for Claude Code: 19 prompt-only skills (wiki-*, proj-*, using-skillwiki) backed by the deterministic `skillwiki` CLI.",
6
6
  "author": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillwiki",
3
- "version": "0.10.8",
3
+ "version": "0.10.9",
4
4
  "description": "Project-aware Karpathy-style knowledge base for Codex with 19 prompt-only skills backed by the deterministic skillwiki CLI.",
5
5
  "author": {
6
6
  "name": "karlorz",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillwiki/skills",
3
- "version": "0.10.8",
3
+ "version": "0.10.9",
4
4
  "private": true,
5
5
  "files": [
6
6
  "wiki-*",