@namewta/speculo 0.3.0 → 0.3.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.
Files changed (149) hide show
  1. package/README.md +1 -2
  2. package/dist/src/cli.js +40 -6
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/index.js +5 -0
  5. package/dist/src/index.js.map +1 -1
  6. package/dist/src/skills-mirror.d.ts +38 -0
  7. package/dist/src/skills-mirror.js +160 -0
  8. package/dist/src/skills-mirror.js.map +1 -0
  9. package/package.json +3 -2
  10. package/template/canonical/README.md +7 -1
  11. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +2040 -0
  12. package/template/canonical/canonical-specdev-goal-plan.md +1379 -0
  13. package/template/canonical/canonical-specdev-grill-with-docs.md +848 -285
  14. package/template/canonical/canonical-specdev-spec.md +1061 -46
  15. package/template/canonical/canonical-specdev-tickets.md +1529 -175
  16. package/template/canonical/canonical-specdev-wayfinder.md +677 -107
  17. package/template/commands/git-repository-audit.md +682 -0
  18. package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +69 -36
  19. package/template/workflows/specdev/A-archive-and-consolidate/archive-checklist.md +15 -0
  20. package/template/workflows/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md +32 -0
  21. package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +51 -51
  22. package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +64 -0
  23. package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +252 -0
  24. package/template/workflows/specdev/E-engineering-cognitive-mentor/architecture-guidance.md +90 -0
  25. package/template/workflows/specdev/E-engineering-cognitive-mentor/bug-guidance.md +80 -0
  26. package/template/workflows/specdev/E-engineering-cognitive-mentor/codebase-guidance.md +107 -0
  27. package/template/workflows/specdev/E-engineering-cognitive-mentor/comprehension-and-closure.md +95 -0
  28. package/template/workflows/specdev/E-engineering-cognitive-mentor/domain-learning-guidance.md +62 -0
  29. package/template/workflows/specdev/E-engineering-cognitive-mentor/evidence-and-options.md +132 -0
  30. package/template/workflows/specdev/E-engineering-cognitive-mentor/interaction-protocol.md +116 -0
  31. package/template/workflows/specdev/E-engineering-cognitive-mentor/mentor-report-template.md +135 -0
  32. package/template/workflows/specdev/E-engineering-cognitive-mentor/mode-routing.md +47 -0
  33. package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +147 -0
  34. package/template/workflows/specdev/E-engineering-cognitive-mentor/requirements-guidance.md +92 -0
  35. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +100 -30
  36. package/template/workflows/specdev/G-grill-with-docs/adr-format.md +22 -77
  37. package/template/workflows/specdev/G-grill-with-docs/context-format.md +27 -53
  38. package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +6 -82
  39. package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +32 -49
  40. package/template/workflows/specdev/G-grill-with-docs/log-format.md +16 -98
  41. package/template/workflows/specdev/I-implement/I-implement.md +168 -52
  42. package/template/workflows/specdev/I-implement/code-review-process.md +10 -76
  43. package/template/workflows/specdev/I-implement/codebase-design-glossary.md +12 -109
  44. package/template/workflows/specdev/I-implement/deepening.md +12 -32
  45. package/template/workflows/specdev/I-implement/design-it-twice.md +6 -41
  46. package/template/workflows/specdev/I-implement/evidence-template.md +69 -0
  47. package/template/workflows/specdev/I-implement/execution-preflight.md +20 -0
  48. package/template/workflows/specdev/I-implement/tdd-examples.md +10 -135
  49. package/template/workflows/specdev/I-implement/tdd-rules.md +12 -28
  50. package/template/workflows/specdev/I-init-setup/I-init-setup.md +81 -86
  51. package/template/workflows/specdev/I-init-setup/change-status-template.json +15 -0
  52. package/template/workflows/specdev/I-init-setup/config-template.json +26 -0
  53. package/template/workflows/specdev/I-init-setup/domain-layout-template.md +23 -0
  54. package/template/workflows/specdev/I-init-setup/status-labels-template.md +55 -0
  55. package/template/workflows/specdev/I-init-setup/status-template.json +7 -0
  56. package/template/workflows/specdev/I-init-setup/tracking-template.md +10 -0
  57. package/template/workflows/specdev/INDEX.md +165 -82
  58. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +108 -44
  59. package/template/workflows/specdev/P-goal-plan/completion-control.md +79 -0
  60. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +105 -0
  61. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +115 -0
  62. package/template/workflows/specdev/P-goal-plan/planning-modes.md +70 -0
  63. package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +103 -40
  64. package/template/workflows/specdev/R-review-architecture/architecture-review-report-template.html +58 -0
  65. package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +68 -0
  66. package/template/workflows/specdev/R-review-architecture/proposal-to-ticket.md +11 -0
  67. package/template/workflows/specdev/S-spec/S-spec.md +103 -49
  68. package/template/workflows/specdev/S-spec/spec-readiness.md +16 -0
  69. package/template/workflows/specdev/S-spec/spec-template.md +95 -0
  70. package/template/workflows/specdev/T-tickets/T-tickets.md +146 -133
  71. package/template/workflows/specdev/T-tickets/decomposition-rules.md +56 -0
  72. package/template/workflows/specdev/T-tickets/ticket-readiness.md +45 -0
  73. package/template/workflows/specdev/T-tickets/ticket-template.md +124 -0
  74. package/template/workflows/specdev/T-tickets/tickets-map-template.md +52 -50
  75. package/template/workflows/specdev/T-triage/T-triage.md +32 -63
  76. package/template/workflows/specdev/T-triage/triage-template.md +29 -0
  77. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +88 -155
  78. package/template/workflows/specdev/W-wayfinder/investigation-ticket-template.md +50 -0
  79. package/template/workflows/specdev/W-wayfinder/wayfinder-map-template.md +46 -0
  80. package/template/workflows/specdev/_state/status.json +1 -1
  81. package/template/workflows/specdev/common/README.md +47 -0
  82. package/template/workflows/specdev/common/rules/artifact-contract.md +57 -0
  83. package/template/workflows/specdev/common/rules/code-commenting-rule.md +39 -0
  84. package/template/workflows/specdev/common/rules/deviation-control.md +43 -0
  85. package/template/workflows/specdev/common/rules/evidence-and-verification.md +57 -0
  86. package/template/workflows/specdev/common/rules/path-ownership.md +35 -0
  87. package/template/workflows/specdev/common/rules/path-reference-contract.md +116 -0
  88. package/template/workflows/specdev/common/rules/planning-principles.md +57 -0
  89. package/template/workflows/specdev/common/rules/readiness-and-depth.md +51 -0
  90. package/template/workflows/specdev/common/schemas/change-status.schema.json +170 -0
  91. package/template/workflows/specdev/common/schemas/config.schema.json +54 -0
  92. package/template/workflows/specdev/common/schemas/goal-plan.schema.json +21 -0
  93. package/template/workflows/specdev/common/schemas/spec.schema.json +16 -0
  94. package/template/workflows/specdev/common/schemas/status.schema.json +149 -0
  95. package/template/workflows/specdev/common/schemas/ticket.schema.json +130 -0
  96. package/template/workflows/specdev/common/schemas/tickets-map.schema.json +14 -0
  97. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +28 -0
  98. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +30 -0
  99. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +16 -0
  100. package/template/workflows/specdev/common/skills/research/SKILL.md +43 -0
  101. package/template/workflows/specdev/common/tools/README.md +16 -0
  102. package/template/workflows/specdev/common/tools/validate-specdev.mjs +1155 -0
  103. package/template/canonical/canonical-teach.md +0 -301
  104. package/template/workflows/specdev/A-archive-and-consolidate/archive-rules.md +0 -49
  105. package/template/workflows/specdev/A-archive-and-consolidate/cleanup-rules.md +0 -80
  106. package/template/workflows/specdev/A-archive-and-consolidate/consolidation-rules.md +0 -122
  107. package/template/workflows/specdev/A-archive-and-consolidate/discrimination-guide.md +0 -96
  108. package/template/workflows/specdev/A-archive-and-consolidate/knowledge-graduation.md +0 -51
  109. package/template/workflows/specdev/D-diagnose-bugs/cleanup-postmortem.md +0 -37
  110. package/template/workflows/specdev/D-diagnose-bugs/feedback-loop-techniques.md +0 -84
  111. package/template/workflows/specdev/D-diagnose-bugs/hypothesis-format.md +0 -46
  112. package/template/workflows/specdev/D-diagnose-bugs/instrumentation-rules.md +0 -51
  113. package/template/workflows/specdev/I-init-setup/domain-layout.md +0 -55
  114. package/template/workflows/specdev/I-init-setup/status-labels.md +0 -53
  115. package/template/workflows/specdev/I-init-setup/tracking-convention.md +0 -52
  116. package/template/workflows/specdev/P-goal-plan/execution-sections.md +0 -126
  117. package/template/workflows/specdev/P-goal-plan/governance-sections.md +0 -103
  118. package/template/workflows/specdev/P-goal-plan/input-validation.md +0 -94
  119. package/template/workflows/specdev/P-goal-plan/lead-orchestration-protocol.md +0 -158
  120. package/template/workflows/specdev/P-goal-plan/quick-reference-table.md +0 -60
  121. package/template/workflows/specdev/P-goal-plan/vision-sections.md +0 -80
  122. package/template/workflows/specdev/R-review-architecture/exploration-guide.md +0 -103
  123. package/template/workflows/specdev/R-review-architecture/html-report-template.md +0 -124
  124. package/template/workflows/specdev/T-triage/artifact-templates.md +0 -122
  125. package/template/workflows/specdev/T-triage/intake-rules.md +0 -71
  126. package/template/workflows/specdev/T-triage/routing-rules.md +0 -70
  127. package/template/workflows/specdev/T-triage/understanding-rules.md +0 -102
  128. package/template/workflows/specdev/_state/adr/.gitkeep +0 -0
  129. package/template/workflows/specdev/_state/context/.gitkeep +0 -0
  130. package/template/workflows/specdev/_state/research/.gitkeep +0 -0
  131. package/template/workflows/specdev/common/dev-worktree/SKILL.md +0 -48
  132. package/template/workflows/specdev/common/dev-worktree/references/create.md +0 -63
  133. package/template/workflows/specdev/common/dev-worktree/references/finalize.md +0 -102
  134. package/template/workflows/specdev/common/handoff/SKILL.md +0 -42
  135. package/template/workflows/specdev/common/neat-freak/SKILL.md +0 -210
  136. package/template/workflows/specdev/common/neat-freak/references/agent-paths.md +0 -72
  137. package/template/workflows/specdev/common/neat-freak/references/governance.md +0 -88
  138. package/template/workflows/specdev/common/neat-freak/references/sync-matrix.md +0 -77
  139. package/template/workflows/specdev/common/neat-freak/references/verification.md +0 -92
  140. package/template/workflows/specdev/common/neat-freak/scripts/audit-inventory.sh +0 -106
  141. package/template/workflows/specdev/common/prototype/LOGIC.md +0 -89
  142. package/template/workflows/specdev/common/prototype/SKILL.md +0 -78
  143. package/template/workflows/specdev/common/prototype/UI.md +0 -120
  144. package/template/workflows/specdev/common/research/SKILL.md +0 -54
  145. package/template/workflows/specdev/common/resolving-merge-conflicts/SKILL.md +0 -14
  146. package/template/workflows/specdev/common/scripts/hitl-loop.template.sh +0 -41
  147. package/template/workflows/specdev/common/triage/AGENT-BRIEF.md +0 -204
  148. package/template/workflows/specdev/common/triage/OUT-OF-SCOPE.md +0 -104
  149. package/template/workflows/specdev/common/triage/SKILL.md +0 -112
package/README.md CHANGED
@@ -73,8 +73,7 @@ Every workflow ships an `INDEX.md` as its auto-generated work catalog. Work entr
73
73
 
74
74
  - [AGENTS.md](./AGENTS.md) — AI agent handbook (authoritative)
75
75
  - [CHANGELOG.md](./CHANGELOG.md) — Release history
76
- - [docs/](./docs/) — Authoring contracts for commands, skills, workflows, and persistence
77
- - [.agents/skills/](./.agents/skills/) — Internal authoring tools for Speculo maintainers
76
+ - [.agents/skills/](./.agents/skills/) — Internal authoring tools for Speculo maintainers (self-contained authoring contracts under `_shared/` and per-skill `references/`)
78
77
  - [README-ZH.md](./README-ZH.md) — 中文镜像
79
78
 
80
79
  ## Acknowledgments — Honoring Open Source Heritage
package/dist/src/cli.js CHANGED
@@ -3,24 +3,29 @@ import { dirname, resolve } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { initSpeculo } from "./index.js";
5
5
  import { migrateSpeculo } from "./migrate.js";
6
+ import { mirrorSkills } from "./skills-mirror.js";
6
7
  import { checkForUpdate, formatVersionBanner, } from "./version.js";
7
8
  function usage() {
8
9
  return [
9
10
  "Usage:",
10
11
  " speculo init [--all] [target]",
11
12
  " speculo migrate [--apply] [target]",
13
+ " speculo mirror-skills [--dry-run] [target]",
12
14
  " speculo version",
13
15
  "",
14
16
  "Commands:",
15
- " init Install or refresh Speculo core assets and selected workflow packages.",
16
- " Existing workflow state under speculo/.speculo/ is never overwritten.",
17
- " migrate Preview migration from v2 or transitional v3 state to the current v3 contract.",
18
- " Pass --apply to perform the staged, rollback-safe migration.",
19
- " version Print the current Speculo version and check for updates.",
17
+ " init Install or refresh Speculo core assets and selected workflow packages.",
18
+ " Existing workflow state under speculo/.speculo/ is never overwritten.",
19
+ " migrate Preview migration from v2 or transitional v3 state to the current v3 contract.",
20
+ " Pass --apply to perform the staged, rollback-safe migration.",
21
+ " mirror-skills Mirror .agents/skills/* canonical skills into .claude/skills/* pointers.",
22
+ " Idempotent; relocates full .claude skills into .agents canonical first.",
23
+ " version Print the current Speculo version and check for updates.",
20
24
  "",
21
25
  "Options:",
22
26
  " --all Select every workflow and fully refresh all assets during init.",
23
27
  " --apply Apply a migration; without this flag migrate is always dry-run.",
28
+ " --dry-run Preview mirror-skills actions without writing to disk.",
24
29
  ].join("\n");
25
30
  }
26
31
  function isInteractive() {
@@ -44,7 +49,10 @@ async function confirmContinue() {
44
49
  async function main(argv) {
45
50
  const allFlag = argv.includes("--all");
46
51
  const applyFlag = argv.includes("--apply");
47
- const positional = argv.filter((argument) => argument !== "--all" && argument !== "--apply");
52
+ const dryRunFlag = argv.includes("--dry-run");
53
+ const positional = argv.filter((argument) => argument !== "--all" &&
54
+ argument !== "--apply" &&
55
+ argument !== "--dry-run");
48
56
  const [command, targetArg, extra] = positional;
49
57
  if (command === "--help" || command === "-h") {
50
58
  console.log(usage());
@@ -116,6 +124,32 @@ async function main(argv) {
116
124
  }
117
125
  return 0;
118
126
  }
127
+ // ── mirror-skills ────────────────────────────────────────
128
+ if (command === "mirror-skills") {
129
+ if (allFlag) {
130
+ throw new Error("--all is only valid with `speculo init`.");
131
+ }
132
+ if (applyFlag) {
133
+ throw new Error("--apply is only valid with `speculo migrate`.");
134
+ }
135
+ const result = await mirrorSkills(targetArg ?? ".", {
136
+ apply: !dryRunFlag,
137
+ });
138
+ console.log(result.applied
139
+ ? "Skills mirrored in " + result.target
140
+ : "Skills mirror preview for " + result.target);
141
+ for (const action of result.actions) {
142
+ console.log(" " + action.kind + " " + action.name +
143
+ (action.detail ? " (" + action.detail + ")" : ""));
144
+ }
145
+ if (result.actions.length === 0) {
146
+ console.log(" No skills found under .agents/skills or .claude/skills.");
147
+ }
148
+ if (!result.applied) {
149
+ console.log("Dry-run only. Re-run without --dry-run to apply.");
150
+ }
151
+ return 0;
152
+ }
119
153
  // ── update (deprecated) ──────────────────────────────────
120
154
  if (command === "update") {
121
155
  console.error("Warning: `speculo update` is deprecated. Use `speculo init`.");
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -36,6 +36,11 @@ async function copyCoreAssets(packageRoot, root, overwrite) {
36
36
  await cp(source, destination);
37
37
  copied.push(asset);
38
38
  }
39
+ else {
40
+ // Never overwrite a user-edited config on update; report the skip so
41
+ // the init output makes the preservation explicit (issue #33).
42
+ copied.push(asset + " (preserved)");
43
+ }
39
44
  continue;
40
45
  }
41
46
  if (overwrite && asset !== ".speculo") {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Sentinel embedded in the body of every generated pointer. Its presence is the
3
+ * single authoritative signal that a `.claude/skills/<name>/SKILL.md` is a thin
4
+ * pointer rather than a full canonical skill.
5
+ */
6
+ export declare const POINTER_SENTINEL = "<!-- speculo:pointer -->";
7
+ export type MirrorActionKind = "mirror" | "relocate" | "skip";
8
+ export type MirrorAction = {
9
+ kind: MirrorActionKind;
10
+ name: string;
11
+ detail?: string;
12
+ };
13
+ export type MirrorSkillsResult = {
14
+ target: string;
15
+ applied: boolean;
16
+ actions: MirrorAction[];
17
+ };
18
+ export type MirrorSkillsOptions = {
19
+ /** When false the operation is a dry-run: nothing is written to disk. */
20
+ apply?: boolean;
21
+ };
22
+ /**
23
+ * Mirror `.agents/skills/*` canonical skills into `.claude/skills/*` pointers.
24
+ *
25
+ * Behavior (see issue #34):
26
+ * - **mirror**: `.agents` holds the canonical skill; write/refresh the thin
27
+ * pointer in `.claude`.
28
+ * - **relocate**: `.claude` holds a full (non-pointer) skill and `.agents` has
29
+ * no canonical for it; copy the full skill to `.agents` as the source of
30
+ * truth, then turn the `.claude` side into a pointer. No content is lost.
31
+ * - **skip**: the `.claude` pointer already matches the canonical.
32
+ *
33
+ * Idempotent: a second run over unchanged inputs produces only `skip` actions.
34
+ * All paths are resolved absolutely and target directories are created as
35
+ * needed. A pointer whose canonical is missing, or a name that is a full skill
36
+ * on both sides, is a hard error rather than a silent skip.
37
+ */
38
+ export declare function mirrorSkills(targetArg?: string, options?: MirrorSkillsOptions): Promise<MirrorSkillsResult>;
@@ -0,0 +1,160 @@
1
+ import { cp, mkdir, readdir, readFile, writeFile } from "node:fs/promises";
2
+ import { join, resolve } from "node:path";
3
+ import { pathExists } from "./utils.js";
4
+ const AGENTS_SKILLS = [".agents", "skills"];
5
+ const CLAUDE_SKILLS = [".claude", "skills"];
6
+ const SKILL_ENTRY = "SKILL.md";
7
+ /**
8
+ * Sentinel embedded in the body of every generated pointer. Its presence is the
9
+ * single authoritative signal that a `.claude/skills/<name>/SKILL.md` is a thin
10
+ * pointer rather than a full canonical skill.
11
+ */
12
+ export const POINTER_SENTINEL = "<!-- speculo:pointer -->";
13
+ /**
14
+ * Extract the frontmatter block (the text between the leading `---` fence and
15
+ * the next `---` line) from a SKILL.md, preserving it verbatim. Returns the
16
+ * inner lines without the fences. Throws when the file has no frontmatter,
17
+ * because the pointer must carry the canonical `name`/`description`/trigger.
18
+ */
19
+ function extractFrontmatter(content, skillPath) {
20
+ const lines = content.split("\n");
21
+ if (lines[0]?.trim() !== "---") {
22
+ throw new Error("Skill is missing leading frontmatter fence: " + skillPath);
23
+ }
24
+ for (let index = 1; index < lines.length; index += 1) {
25
+ if (lines[index]?.trim() === "---") {
26
+ return lines.slice(1, index).join("\n");
27
+ }
28
+ }
29
+ throw new Error("Skill frontmatter is not terminated: " + skillPath);
30
+ }
31
+ /**
32
+ * Build the deterministic pointer body for a skill. The relative path resolves
33
+ * from `.claude/skills/<name>/SKILL.md` up three levels to the project root and
34
+ * back down into the canonical `.agents/skills/<name>/SKILL.md`.
35
+ */
36
+ function buildPointer(name, frontmatter) {
37
+ const relativeCanonical = "../../../.agents/skills/" + name + "/" + SKILL_ENTRY;
38
+ return [
39
+ "---",
40
+ frontmatter,
41
+ "---",
42
+ "",
43
+ POINTER_SENTINEL,
44
+ "",
45
+ "> **正本单一事实源**:本文件是指针,判定与执行逻辑都不在此处。",
46
+ "",
47
+ "**立即读取正本 `SKILL.md` 并照其执行**:",
48
+ "[`" + relativeCanonical + "`](" + relativeCanonical + ")",
49
+ "",
50
+ ].join("\n");
51
+ }
52
+ async function isPointer(skillFile) {
53
+ const content = await readFile(skillFile, "utf8");
54
+ return content.includes(POINTER_SENTINEL);
55
+ }
56
+ /** List immediate subdirectories that contain a SKILL.md. */
57
+ async function listSkillNames(skillsDir) {
58
+ if (!(await pathExists(skillsDir))) {
59
+ return [];
60
+ }
61
+ const entries = await readdir(skillsDir, { withFileTypes: true });
62
+ const names = [];
63
+ for (const entry of entries) {
64
+ if (!entry.isDirectory())
65
+ continue;
66
+ if (await pathExists(join(skillsDir, entry.name, SKILL_ENTRY))) {
67
+ names.push(entry.name);
68
+ }
69
+ }
70
+ return names;
71
+ }
72
+ /**
73
+ * Mirror `.agents/skills/*` canonical skills into `.claude/skills/*` pointers.
74
+ *
75
+ * Behavior (see issue #34):
76
+ * - **mirror**: `.agents` holds the canonical skill; write/refresh the thin
77
+ * pointer in `.claude`.
78
+ * - **relocate**: `.claude` holds a full (non-pointer) skill and `.agents` has
79
+ * no canonical for it; copy the full skill to `.agents` as the source of
80
+ * truth, then turn the `.claude` side into a pointer. No content is lost.
81
+ * - **skip**: the `.claude` pointer already matches the canonical.
82
+ *
83
+ * Idempotent: a second run over unchanged inputs produces only `skip` actions.
84
+ * All paths are resolved absolutely and target directories are created as
85
+ * needed. A pointer whose canonical is missing, or a name that is a full skill
86
+ * on both sides, is a hard error rather than a silent skip.
87
+ */
88
+ export async function mirrorSkills(targetArg = ".", options = {}) {
89
+ const apply = options.apply ?? true;
90
+ const target = resolve(targetArg);
91
+ const agentsSkillsDir = join(target, ...AGENTS_SKILLS);
92
+ const claudeSkillsDir = join(target, ...CLAUDE_SKILLS);
93
+ const agentNames = new Set(await listSkillNames(agentsSkillsDir));
94
+ const claudeNames = await listSkillNames(claudeSkillsDir);
95
+ const names = new Set([...agentNames, ...claudeNames]);
96
+ const actions = [];
97
+ for (const name of [...names].sort()) {
98
+ const agentSkillDir = join(agentsSkillsDir, name);
99
+ const agentSkillFile = join(agentSkillDir, SKILL_ENTRY);
100
+ const claudeSkillDir = join(claudeSkillsDir, name);
101
+ const claudeSkillFile = join(claudeSkillDir, SKILL_ENTRY);
102
+ const agentHas = agentNames.has(name);
103
+ const claudeHas = claudeNames.includes(name);
104
+ const claudeIsPointer = claudeHas && (await isPointer(claudeSkillFile));
105
+ // Full skill present on both sides: refuse to clobber, force human review.
106
+ if (agentHas && claudeHas && !claudeIsPointer) {
107
+ throw new Error("Conflict for skill '" +
108
+ name +
109
+ "': a full (non-pointer) SKILL.md exists in both .agents/skills and " +
110
+ ".claude/skills. Reconcile the canonical source manually before mirroring.");
111
+ }
112
+ // Dangling pointer: .claude points at a canonical that does not exist.
113
+ if (!agentHas && claudeIsPointer) {
114
+ throw new Error("Skill '" +
115
+ name +
116
+ "' is a pointer in .claude/skills but has no canonical in " +
117
+ ".agents/skills/" +
118
+ name +
119
+ "/" +
120
+ SKILL_ENTRY +
121
+ ".");
122
+ }
123
+ // Reverse relocation: promote a full .claude skill to canonical in .agents.
124
+ if (!agentHas && claudeHas && !claudeIsPointer) {
125
+ if (apply) {
126
+ await mkdir(agentsSkillsDir, { recursive: true });
127
+ await cp(claudeSkillDir, agentSkillDir, { recursive: true });
128
+ }
129
+ const frontmatter = extractFrontmatter(await readFile(claudeSkillFile, "utf8"), claudeSkillFile);
130
+ if (apply) {
131
+ await writeFile(claudeSkillFile, buildPointer(name, frontmatter), "utf8");
132
+ }
133
+ actions.push({
134
+ kind: "relocate",
135
+ name,
136
+ detail: ".claude → .agents canonical, .claude → pointer",
137
+ });
138
+ continue;
139
+ }
140
+ // Normal mirror: canonical in .agents, write/refresh pointer in .claude.
141
+ if (agentHas) {
142
+ const frontmatter = extractFrontmatter(await readFile(agentSkillFile, "utf8"), agentSkillFile);
143
+ const pointer = buildPointer(name, frontmatter);
144
+ const existing = claudeHas && (await pathExists(claudeSkillFile))
145
+ ? await readFile(claudeSkillFile, "utf8")
146
+ : null;
147
+ if (existing === pointer) {
148
+ actions.push({ kind: "skip", name, detail: "pointer up to date" });
149
+ continue;
150
+ }
151
+ if (apply) {
152
+ await mkdir(claudeSkillDir, { recursive: true });
153
+ await writeFile(claudeSkillFile, pointer, "utf8");
154
+ }
155
+ actions.push({ kind: "mirror", name });
156
+ }
157
+ }
158
+ return { target, applied: apply, actions };
159
+ }
160
+ //# sourceMappingURL=skills-mirror.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-mirror.js","sourceRoot":"","sources":["../../src/skills-mirror.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namewta/speculo",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Workflow-packaged specification-driven development assets with install, update, and migration tooling.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,7 +10,8 @@
10
10
  "build": "tsc -p tsconfig.json",
11
11
  "test": "node --test dist/test/*.test.js",
12
12
  "pretest": "pnpm build",
13
- "validate-assets": "node scripts/validate-framework-assets.mjs && node scripts/check-template-links.mjs",
13
+ "generate-canonical": "node scripts/generate-specdev-canonical.mjs",
14
+ "validate-assets": "node scripts/generate-specdev-canonical.mjs --check && node scripts/validate-framework-assets.mjs && node scripts/check-template-links.mjs",
14
15
  "check": "pnpm test && pnpm validate-assets",
15
16
  "verify-bin": "node scripts/verify-bin.mjs",
16
17
  "prepack": "pnpm build",
@@ -61,7 +61,13 @@ Canonical 文档是源文件的**透明容器**——去除 Speculo 内部元数
61
61
 
62
62
  ## 生成方法
63
63
 
64
- `speculo-write-canonical` skill 的流程手动拼接:
64
+ SpecDev 的设计、规格、Tickets、Goal Plan 和 Wayfinder canonical 使用 Node 脚本从当前模板统一生成:
65
+
66
+ ```bash
67
+ pnpm generate-canonical
68
+ ```
69
+
70
+ 其他 canonical 按 `speculo-write-canonical` skill 的流程手动拼接:
65
71
 
66
72
  1. 读取能力源目录,识别主入口和所有被引用文件
67
73
  2. 去除所有 YAML frontmatter