@blxzer/cursor-trellis 0.3.6 → 0.4.1

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 (67) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/README.md +10 -6
  3. package/dist/commands/update.d.ts.map +1 -1
  4. package/dist/commands/update.js +11 -1
  5. package/dist/commands/update.js.map +1 -1
  6. package/dist/configurators/shared.d.ts.map +1 -1
  7. package/dist/configurators/shared.js +2 -1
  8. package/dist/configurators/shared.js.map +1 -1
  9. package/dist/configurators/workflow.d.ts +7 -0
  10. package/dist/configurators/workflow.d.ts.map +1 -1
  11. package/dist/configurators/workflow.js +61 -2
  12. package/dist/configurators/workflow.js.map +1 -1
  13. package/dist/constants/paths.d.ts +4 -0
  14. package/dist/constants/paths.d.ts.map +1 -1
  15. package/dist/constants/paths.js +4 -0
  16. package/dist/constants/paths.js.map +1 -1
  17. package/dist/migrations/manifests/0.4.0.json +9 -0
  18. package/dist/migrations/manifests/0.4.1.json +9 -0
  19. package/dist/templates/common/{skills/check.md → bundled-skills/cstl-check/SKILL.md} +55 -7
  20. package/dist/templates/common/bundled-skills/cstl-check/references/fowler-12-smells.md +28 -0
  21. package/dist/templates/common/bundled-skills/cstl-handoff/SKILL.md +117 -0
  22. package/dist/templates/common/bundled-skills/cstl-micro-grill/SKILL.md +6 -0
  23. package/dist/templates/common/skills/brainstorm.md +15 -0
  24. package/dist/templates/cursor/agents/cstl-check.md +14 -0
  25. package/dist/templates/cursor/commands/handoff.md +99 -0
  26. package/dist/templates/markdown/index.d.ts +6 -0
  27. package/dist/templates/markdown/index.d.ts.map +1 -1
  28. package/dist/templates/markdown/index.js +6 -0
  29. package/dist/templates/markdown/index.js.map +1 -1
  30. package/dist/templates/markdown/spec/guides/artifact-locale-guide.md.txt +93 -0
  31. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +7 -7
  32. package/dist/templates/markdown/spec/guides/cursor-subagent-policy.md.txt +10 -8
  33. package/dist/templates/markdown/spec/guides/debug-loop-guide.md.txt +227 -0
  34. package/dist/templates/markdown/spec/guides/goal-release-regression-runbook.md.txt +132 -0
  35. package/dist/templates/markdown/spec/guides/index.md.txt +37 -0
  36. package/dist/templates/markdown/spec/guides/prototype-guide.md.txt +139 -0
  37. package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +4 -0
  38. package/dist/templates/markdown/spec/guides/test-discipline-guide.md.txt +138 -0
  39. package/dist/templates/markdown/spec/guides/verification-strength-guide.md.txt +1 -0
  40. package/dist/templates/trellis/CONTEXT.md +53 -0
  41. package/dist/templates/trellis/docs/adr/README.md +21 -0
  42. package/dist/templates/trellis/index.d.ts +14 -0
  43. package/dist/templates/trellis/index.d.ts.map +1 -1
  44. package/dist/templates/trellis/index.js +29 -0
  45. package/dist/templates/trellis/index.js.map +1 -1
  46. package/dist/templates/trellis/pool/README.md +103 -0
  47. package/dist/templates/trellis/pool/items/.gitkeep +0 -0
  48. package/dist/templates/trellis/pool/plan.md +26 -0
  49. package/dist/templates/trellis/scripts/common/artifact_locale.py +16 -0
  50. package/dist/templates/trellis/scripts/common/pool_store.py +702 -0
  51. package/dist/templates/trellis/scripts/common/task_dashboard.py +8 -0
  52. package/dist/templates/trellis/scripts/common/task_dependencies.py +673 -0
  53. package/dist/templates/trellis/scripts/common/task_gates.py +58 -5
  54. package/dist/templates/trellis/scripts/common/task_store.py +256 -0
  55. package/dist/templates/trellis/scripts/common/test_depends_mode_block.py +489 -0
  56. package/dist/templates/trellis/scripts/common/test_pool_store.py +428 -0
  57. package/dist/templates/trellis/scripts/common/test_task_dependencies.py +345 -0
  58. package/dist/templates/trellis/scripts/pool.py +192 -0
  59. package/dist/templates/trellis/scripts/task.py +66 -1
  60. package/dist/templates/trellis/scripts/verify_evidence_probe.py +138 -0
  61. package/dist/templates/trellis/tasks/locale/en/default-prd.md +8 -0
  62. package/dist/templates/trellis/tasks/locale/zh/default-prd.md +8 -0
  63. package/dist/templates/trellis/workflow.md +34 -2
  64. package/dist/utils/manifest-prune.d.ts.map +1 -1
  65. package/dist/utils/manifest-prune.js +7 -0
  66. package/dist/utils/manifest-prune.js.map +1 -1
  67. package/package.json +2 -2
@@ -1,4 +1,11 @@
1
1
  import { type ProjectType, type DetectedPackage } from "../utils/project-detector.js";
2
+ /**
3
+ * Root-level files written by the workflow configurator (outside `.cstl/`).
4
+ * Shared by createWorkflowStructure (init), update.ts collectTemplateFiles
5
+ * (update hash tracking), and manifest-prune buildKnownKeys (so uninstall
6
+ * recognizes them as trellis-written and removes them).
7
+ */
8
+ export declare function getWorkflowRootTemplateFiles(): Map<string, string>;
2
9
  /**
3
10
  * Options for creating workflow structure
4
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AA+CA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAOtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Df"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AAwDA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAOtC;;;;;GAKG;AACH,wBAAgB,4BAA4B,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAKlE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAyEf"}
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { DIR_NAMES, PATHS } from "../constants/paths.js";
3
- import { getAllScripts, workflowMdTemplate, configYamlTemplate, gitignoreTemplate, executionStrategyRulesJson, } from "../templates/trellis/index.js";
3
+ import { getAllScripts, getAllPoolSkeleton, workflowMdTemplate, configYamlTemplate, gitignoreTemplate, executionStrategyRulesJson, contextMdTemplate, adrReadmeTemplate, } from "../templates/trellis/index.js";
4
4
  // Import markdown templates
5
5
  import { agentProgressIndexContent,
6
6
  // Backend structure (multi-doc)
@@ -8,11 +8,23 @@ backendIndexContent, backendDirectoryStructureContent, backendDatabaseGuidelines
8
8
  // Frontend structure (multi-doc)
9
9
  frontendIndexContent, frontendDirectoryStructureContent, frontendTypeSafetyContent, frontendHookGuidelinesContent, frontendComponentGuidelinesContent, frontendQualityGuidelinesContent, frontendStateManagementContent,
10
10
  // Guides structure
11
- guidesIndexContent, guidesCrossLayerThinkingGuideContent, guidesCodeReuseThinkingGuideContent, guidesDurableLearningDecisionGuideContent, guidesRetrievalDailyGuideContent, guidesCursorSemanticComplianceContent, guidesCursorSubagentPolicyContent, guidesExecutionStrategyContent, guidesCursorContextInjectionGuideContent, guidesCursorNativeModesGuideContent, guidesVerificationStrengthGuideContent, guidesInjectionBudgetGuideContent, } from "../templates/markdown/index.js";
11
+ guidesIndexContent, guidesCrossLayerThinkingGuideContent, guidesCodeReuseThinkingGuideContent, guidesDurableLearningDecisionGuideContent, guidesRetrievalDailyGuideContent, guidesCursorSemanticComplianceContent, guidesCursorSubagentPolicyContent, guidesExecutionStrategyContent, guidesCursorContextInjectionGuideContent, guidesCursorNativeModesGuideContent, guidesVerificationStrengthGuideContent, guidesInjectionBudgetGuideContent, guidesArtifactLocaleGuideContent, guidesDebugLoopGuideContent, guidesGoalReleaseRegressionRunbookContent, guidesPrototypeGuideContent, guidesTestDisciplineGuideContent, guidesCrossPlatformThinkingGuideContent, } from "../templates/markdown/index.js";
12
12
  import { writeFile, ensureDir } from "../utils/file-writer.js";
13
13
  import { replacePythonCommandLiterals } from "./shared.js";
14
14
  import { writeCursor2plusLocalBundle } from "./cursor2plus-local.js";
15
15
  import { sanitizePkgName, } from "../utils/project-detector.js";
16
+ /**
17
+ * Root-level files written by the workflow configurator (outside `.cstl/`).
18
+ * Shared by createWorkflowStructure (init), update.ts collectTemplateFiles
19
+ * (update hash tracking), and manifest-prune buildKnownKeys (so uninstall
20
+ * recognizes them as trellis-written and removes them).
21
+ */
22
+ export function getWorkflowRootTemplateFiles() {
23
+ const files = new Map();
24
+ files.set("CONTEXT.md", contextMdTemplate);
25
+ files.set("docs/adr/README.md", adrReadmeTemplate);
26
+ return files;
27
+ }
16
28
  /**
17
29
  * Create workflow structure based on project type
18
30
  *
@@ -36,6 +48,8 @@ export async function createWorkflowStructure(cwd, options) {
36
48
  ensureDir(path.join(cwd, DIR_NAMES.WORKFLOW));
37
49
  // Write user-shipped Python scripts (same source of truth as trellis update)
38
50
  await writeScriptTemplates(path.join(cwd, PATHS.SCRIPTS));
51
+ // Review-pool skeleton (mechanism docs only; no sample items)
52
+ await writePoolSkeleton(path.join(cwd, PATHS.POOL));
39
53
  // Copy workflow.md (native bundled template or selected marketplace variant)
40
54
  await writeFile(path.join(cwd, PATHS.WORKFLOW_GUIDE_FILE), replacePythonCommandLiterals(workflowMd));
41
55
  // Copy .gitignore from templates
@@ -44,6 +58,16 @@ export async function createWorkflowStructure(cwd, options) {
44
58
  await writeFile(path.join(cwd, DIR_NAMES.WORKFLOW, "config.yaml"), configYamlTemplate);
45
59
  ensureDir(path.join(cwd, DIR_NAMES.WORKFLOW, "config"));
46
60
  await writeFile(path.join(cwd, DIR_NAMES.WORKFLOW, "config", "execution-strategy-rules.json"), executionStrategyRulesJson);
61
+ // Project domain glossary stub (on-demand read, never always-inject)
62
+ // and ADR rules — shared with update.ts collectTemplateFiles and
63
+ // manifest-prune buildKnownKeys via getWorkflowRootTemplateFiles().
64
+ for (const [relativePath, content] of getWorkflowRootTemplateFiles()) {
65
+ const destPath = path.join(cwd, relativePath);
66
+ if (relativePath.endsWith("README.md")) {
67
+ ensureDir(path.dirname(destPath));
68
+ }
69
+ await writeFile(destPath, content);
70
+ }
47
71
  // Create workspace/ with index.md
48
72
  ensureDir(path.join(cwd, PATHS.WORKSPACE));
49
73
  await writeFile(path.join(cwd, PATHS.WORKSPACE, "index.md"), replacePythonCommandLiterals(agentProgressIndexContent));
@@ -74,6 +98,17 @@ async function writeScriptTemplates(scriptsRoot) {
74
98
  });
75
99
  }
76
100
  }
101
+ async function writePoolSkeleton(poolRoot) {
102
+ ensureDir(poolRoot);
103
+ for (const [relativePath, content] of getAllPoolSkeleton()) {
104
+ const destPath = path.join(poolRoot, relativePath);
105
+ ensureDir(path.dirname(destPath));
106
+ // Apply the same platform command rewrite as update.ts collectTemplateFiles
107
+ // so init-written content matches the hash update expects (no-op on
108
+ // same-version update instead of a spurious pool README rewrite).
109
+ await writeFile(destPath, replacePythonCommandLiterals(content));
110
+ }
111
+ }
77
112
  /**
78
113
  * Write backend spec docs into a target spec directory.
79
114
  */
@@ -189,6 +224,30 @@ async function createSpecTemplates(cwd, projectType, packages, remoteSpecPackage
189
224
  name: "injection-budget-guide.md",
190
225
  content: guidesInjectionBudgetGuideContent,
191
226
  },
227
+ {
228
+ name: "artifact-locale-guide.md",
229
+ content: guidesArtifactLocaleGuideContent,
230
+ },
231
+ {
232
+ name: "debug-loop-guide.md",
233
+ content: guidesDebugLoopGuideContent,
234
+ },
235
+ {
236
+ name: "goal-release-regression-runbook.md",
237
+ content: guidesGoalReleaseRegressionRunbookContent,
238
+ },
239
+ {
240
+ name: "prototype-guide.md",
241
+ content: guidesPrototypeGuideContent,
242
+ },
243
+ {
244
+ name: "test-discipline-guide.md",
245
+ content: guidesTestDisciplineGuideContent,
246
+ },
247
+ {
248
+ name: "cross-platform-thinking-guide.md",
249
+ content: guidesCrossPlatformThinkingGuideContent,
250
+ },
192
251
  ];
193
252
  for (const doc of guidesDocs) {
194
253
  await writeFile(path.join(guidesDir, doc.name), doc.content);
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAEvC,4BAA4B;AAC5B,OAAO,EACL,yBAAyB;AACzB,gCAAgC;AAChC,mBAAmB,EACnB,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B;AAC3B,iCAAiC;AACjC,oBAAoB,EACpB,iCAAiC,EACjC,yBAAyB,EACzB,6BAA6B,EAC7B,kCAAkC,EAClC,gCAAgC,EAChC,8BAA8B;AAC9B,mBAAmB;AACnB,kBAAkB,EAClB,oCAAoC,EACpC,mCAAmC,EACnC,yCAAyC,EACzC,gCAAgC,EAChC,qCAAqC,EACrC,iCAAiC,EACjC,8BAA8B,EAC9B,wCAAwC,EACxC,mCAAmC,EACnC,sCAAsC,EACtC,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,yCAAyC,EACzC,2BAA2B,EAC3B,gCAAgC,EAChC,uCAAuC,GACxC,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,eAAe,GAGhB,MAAM,8BAA8B,CAAC;AAOtC;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC3C,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC;AACf,CAAC;AAiCD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAW,EACX,OAAyB;IAEzB,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,WAAW,CAAC;IACxD,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,KAAK,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACnC,MAAM,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,CAAC;IAErE,iCAAiC;IACjC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9C,6EAA6E;IAC7E,MAAM,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1D,8DAA8D;IAC9D,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpD,6EAA6E;IAC7E,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,mBAAmB,CAAC,EACzC,4BAA4B,CAAC,UAAU,CAAC,CACzC,CAAC;IAEF,iCAAiC;IACjC,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,EAChD,iBAAiB,CAClB,CAAC;IAEF,kCAAkC;IAClC,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,EACjD,kBAAkB,CACnB,CAAC;IACF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,+BAA+B,CAAC,EAC7E,0BAA0B,CAC3B,CAAC;IAEF,qEAAqE;IACrE,iEAAiE;IACjE,oEAAoE;IACpE,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,4BAA4B,EAAE,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC9C,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,kCAAkC;IAClC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,EAC3C,4BAA4B,CAAC,yBAAyB,CAAC,CACxD,CAAC;IAEF,0BAA0B;IAC1B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvC,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,8CAA8C;IAC9C,wEAAwE;IACxE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,qDAAqD;QACrD,MAAM,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9B,uEAAuE;QACvE,MAAM,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IACrD,SAAS,CAAC,WAAW,CAAC,CAAC;IACvB,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACpD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,SAAS,CAAC,QAAQ,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAE;YAC/D,UAAU,EAAE,YAAY;SACzB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpB,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,kBAAkB,EAAE,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,4EAA4E;QAC5E,oEAAoE;QACpE,kEAAkE;QAClE,MAAM,SAAS,CAAC,QAAQ,EAAE,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClD,SAAS,CAAC,UAAU,CAAC,CAAC;IACtB,MAAM,IAAI,GAAoB;QAC5B,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE;QAClD;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,gCAAgC;SAC1C;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,gCAAgC;SAC1C;QACD,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,+BAA+B,EAAE;QAC3E,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,+BAA+B,EAAE;QAC3E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,2BAA2B,EAAE;KACpE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpD,SAAS,CAAC,WAAW,CAAC,CAAC;IACvB,MAAM,IAAI,GAAoB;QAC5B,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE;QACnD;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,iCAAiC;SAC3C;QACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,yBAAyB,EAAE;QAC9D,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,6BAA6B,EAAE;QACtE;YACE,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,kCAAkC;SAC5C;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,gCAAgC;SAC1C;QACD,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,8BAA8B,EAAE;KACzE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,WAAwB;IAExB,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAW,EACX,WAAwB,EACxB,QAA4B,EAC5B,kBAAgC;IAEhC,+BAA+B;IAC/B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtC,6CAA6C;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;IACzD,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,UAAU,GAAoB;QAClC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE;QACjD;YACE,IAAI,EAAE,oCAAoC;YAC1C,OAAO,EAAE,yCAAyC;SACnD;QACD;YACE,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,oCAAoC;SAC9C;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,mCAAmC;SAC7C;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,gCAAgC;SAC1C;QACD;YACE,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,iCAAiC;SAC3C;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,8BAA8B;SACxC;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,wCAAwC;SAClD;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,mCAAmC;SAC7C;QACD;YACE,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,sCAAsC;SAChD;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,iCAAiC;SAC3C;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,gCAAgC;SAC1C;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,2BAA2B;SACrC;QACD;YACE,IAAI,EAAE,oCAAoC;YAC1C,OAAO,EAAE,yCAAyC;SACnD;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,2BAA2B;SACrC;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,gCAAgC;SAC1C;QACD;YACE,IAAI,EAAE,kCAAkC;YACxC,OAAO,EAAE,uCAAuC;SACjD;KACF,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,sDAAsD;QACtD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAS;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;YAC/D,SAAS,CAAC,WAAW,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YAChE,MAAM,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -17,6 +17,8 @@ export declare const DIR_NAMES: {
17
17
  readonly SPEC: "spec";
18
18
  /** Scripts directory (under .cstl/) */
19
19
  readonly SCRIPTS: "scripts";
20
+ /** Review-pool directory (under .cstl/) */
21
+ readonly POOL: "pool";
20
22
  };
21
23
  export declare const FILE_NAMES: {
22
24
  /** Root agent instructions file */
@@ -45,6 +47,8 @@ export declare const PATHS: {
45
47
  readonly SPEC: ".cstl/spec";
46
48
  /** .cstl/scripts/ */
47
49
  readonly SCRIPTS: ".cstl/scripts";
50
+ /** .cstl/pool/ */
51
+ readonly POOL: ".cstl/pool";
48
52
  /** .cstl/.developer */
49
53
  readonly DEVELOPER_FILE: ".cstl/.developer";
50
54
  /** .cstl/.current-task */
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,eAAO,MAAM,SAAS;IACpB,8BAA8B;;IAE9B,gEAAgE;;IAEhE,4DAA4D;;IAE5D,uCAAuC;;IAEvC,+CAA+C;;IAE/C,uCAAuC;;CAE/B,CAAC;AAGX,eAAO,MAAM,UAAU;IACrB,mCAAmC;;IAEnC,8BAA8B;;IAE9B,2BAA2B;;IAE3B,oBAAoB;;IAEpB,4BAA4B;;IAE5B,qBAAqB;;IAErB,0BAA0B;;CAElB,CAAC;AAGX,eAAO,MAAM,KAAK;IAChB,aAAa;;IAEb,uBAAuB;;IAEvB,mBAAmB;;IAEnB,kBAAkB;;IAElB,qBAAqB;;IAErB,uBAAuB;;IAEvB,0BAA0B;;IAE1B,wBAAwB;;CAEhB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,eAAO,MAAM,SAAS;IACpB,8BAA8B;;IAE9B,gEAAgE;;IAEhE,4DAA4D;;IAE5D,uCAAuC;;IAEvC,+CAA+C;;IAE/C,uCAAuC;;IAEvC,2CAA2C;;CAEnC,CAAC;AAGX,eAAO,MAAM,UAAU;IACrB,mCAAmC;;IAEnC,8BAA8B;;IAE9B,2BAA2B;;IAE3B,oBAAoB;;IAEpB,4BAA4B;;IAE5B,qBAAqB;;IAErB,0BAA0B;;CAElB,CAAC;AAGX,eAAO,MAAM,KAAK;IAChB,aAAa;;IAEb,uBAAuB;;IAEvB,mBAAmB;;IAEnB,kBAAkB;;IAElB,qBAAqB;;IAErB,kBAAkB;;IAElB,uBAAuB;;IAEvB,0BAA0B;;IAE1B,wBAAwB;;CAEhB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -18,6 +18,8 @@ export const DIR_NAMES = {
18
18
  SPEC: "spec",
19
19
  /** Scripts directory (under .cstl/) */
20
20
  SCRIPTS: "scripts",
21
+ /** Review-pool directory (under .cstl/) */
22
+ POOL: "pool",
21
23
  };
22
24
  // File names
23
25
  export const FILE_NAMES = {
@@ -48,6 +50,8 @@ export const PATHS = {
48
50
  SPEC: `${DIR_NAMES.WORKFLOW}/${DIR_NAMES.SPEC}`,
49
51
  /** .cstl/scripts/ */
50
52
  SCRIPTS: `${DIR_NAMES.WORKFLOW}/${DIR_NAMES.SCRIPTS}`,
53
+ /** .cstl/pool/ */
54
+ POOL: `${DIR_NAMES.WORKFLOW}/${DIR_NAMES.POOL}`,
51
55
  /** .cstl/.developer */
52
56
  DEVELOPER_FILE: `${DIR_NAMES.WORKFLOW}/${FILE_NAMES.DEVELOPER}`,
53
57
  /** .cstl/.current-task */
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mCAAmC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,OAAO;IACjB,gEAAgE;IAChE,SAAS,EAAE,WAAW;IACtB,4DAA4D;IAC5D,KAAK,EAAE,OAAO;IACd,uCAAuC;IACvC,OAAO,EAAE,SAAS;IAClB,+CAA+C;IAC/C,IAAI,EAAE,MAAM;IACZ,uCAAuC;IACvC,OAAO,EAAE,SAAS;CACV,CAAC;AAEX,aAAa;AACb,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,mCAAmC;IACnC,MAAM,EAAE,WAAW;IACnB,8BAA8B;IAC9B,SAAS,EAAE,YAAY;IACvB,2BAA2B;IAC3B,YAAY,EAAE,eAAe;IAC7B,oBAAoB;IACpB,SAAS,EAAE,WAAW;IACtB,4BAA4B;IAC5B,GAAG,EAAE,QAAQ;IACb,qBAAqB;IACrB,cAAc,EAAE,aAAa;IAC7B,0BAA0B;IAC1B,cAAc,EAAE,UAAU;CAClB,CAAC;AAEX,+CAA+C;AAC/C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,aAAa;IACb,QAAQ,EAAE,SAAS,CAAC,QAAQ;IAC5B,uBAAuB;IACvB,SAAS,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,SAAS,EAAE;IACzD,mBAAmB;IACnB,KAAK,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE;IACjD,kBAAkB;IAClB,IAAI,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE;IAC/C,qBAAqB;IACrB,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,OAAO,EAAE;IACrD,uBAAuB;IACvB,cAAc,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE;IAC/D,0BAA0B;IAC1B,iBAAiB,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;IACrE,wBAAwB;IACxB,mBAAmB,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,cAAc,EAAE;CACjE,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,GAAG,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mCAAmC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,OAAO;IACjB,gEAAgE;IAChE,SAAS,EAAE,WAAW;IACtB,4DAA4D;IAC5D,KAAK,EAAE,OAAO;IACd,uCAAuC;IACvC,OAAO,EAAE,SAAS;IAClB,+CAA+C;IAC/C,IAAI,EAAE,MAAM;IACZ,uCAAuC;IACvC,OAAO,EAAE,SAAS;IAClB,2CAA2C;IAC3C,IAAI,EAAE,MAAM;CACJ,CAAC;AAEX,aAAa;AACb,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,mCAAmC;IACnC,MAAM,EAAE,WAAW;IACnB,8BAA8B;IAC9B,SAAS,EAAE,YAAY;IACvB,2BAA2B;IAC3B,YAAY,EAAE,eAAe;IAC7B,oBAAoB;IACpB,SAAS,EAAE,WAAW;IACtB,4BAA4B;IAC5B,GAAG,EAAE,QAAQ;IACb,qBAAqB;IACrB,cAAc,EAAE,aAAa;IAC7B,0BAA0B;IAC1B,cAAc,EAAE,UAAU;CAClB,CAAC;AAEX,+CAA+C;AAC/C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,aAAa;IACb,QAAQ,EAAE,SAAS,CAAC,QAAQ;IAC5B,uBAAuB;IACvB,SAAS,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,SAAS,EAAE;IACzD,mBAAmB;IACnB,KAAK,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE;IACjD,kBAAkB;IAClB,IAAI,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE;IAC/C,qBAAqB;IACrB,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,OAAO,EAAE;IACrD,kBAAkB;IAClB,IAAI,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE;IAC/C,uBAAuB;IACvB,cAAc,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE;IAC/D,0BAA0B;IAC1B,iBAAiB,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;IACrE,wBAAwB;IACxB,mBAAmB,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,cAAc,EAAE;CACjE,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,GAAG,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.4.0",
3
+ "description": "Review pool + task depends_on Plan A/B, workflow/guides alignment",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**@blxzer/cursor-trellis 0.4.0**\n\n- feat(pool): `.cstl/pool/` skeleton + `pool.py` validate/link/plan-check\n- feat(deps): `set-deps` / `set-depends-mode` / `--ignore-deps` (Plan A warn / Plan B block)\n- feat(verify): ship `verify_evidence_probe.py`\n- docs: workflow pool boundary + depends; guides (locale/debug/prototype/test/runbook)\n- chore: empty migrations list (template sync via `cstl update`)",
7
+ "migrations": [],
8
+ "notes": "Run `cstl update` to sync scripts/workflow/pool skeleton. No `--migrate` required. Pool items remain user data."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.4.1",
3
+ "description": "Approved-surface backfill: cstl-handoff + session boundary, cstl-check dual-axis, grilling frontier, PRD grain, CONTEXT/ADR stub",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**@blxzer/cursor-trellis 0.4.1**\n\n- feat(skills): ship `cstl-handoff` bundled skill + Cursor `/cstl-handoff` command\n- feat(workflow): session boundary line; task `handoff.md` ≠ session handoff\n- feat(skills): `cstl-check` dual-axis (Standards/Spec) + Fowler 12 smells asset\n- feat(skills): grilling frontier in brainstorm + micro-grill\n- feat(templates): PRD grain (User Stories / Implementation Decisions) in default-prd en/zh\n- feat(templates): minimal CONTEXT.md stub + docs/adr README\n- chore: empty migrations list (template sync via `cstl update`)",
7
+ "migrations": [],
8
+ "notes": "Run `cstl update` to sync workflow/skills/templates. No `--migrate` required."
9
+ }
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: cstl-check
3
+ description: "Comprehensive quality verification on two axes — Standards (spec compliance, lint, type-check, tests, code smells, cross-layer data flow) and Spec (prd fidelity, scope, learning/spec-sync). Use when code is written and needs quality verification, before committing changes, or to catch context drift during long sessions."
4
+ ---
5
+
1
6
  # Code Quality Check
2
7
 
3
8
  Comprehensive quality verification for recently written code. Combines spec compliance, cross-layer safety, and pre-commit checks.
@@ -35,9 +40,19 @@ Read the specific guideline files referenced — the index is a pointer, not the
35
40
 
36
41
  Run the project's lint, type-check, and test commands. Fix any failures before proceeding.
37
42
 
38
- ## Step 4: Review Against Checklist
43
+ ## Step 4: Review Against Checklist (dual-axis)
44
+
45
+ Report **Standards and Spec in two separate sections** — never merge them into a single severity ranking. Standards findings first, then Spec findings; the same issue may be cross-referenced on both sides, but one axis must not mask the other. Do NOT output a "combined top risks" list mixing spec violations with requirement deviations.
46
+
47
+ ### Dual-axis dispatch (Full+ only)
48
+
49
+ - **Lite / no task context**: single pass — the main agent runs Standards then Spec sequentially (no parallel split).
50
+ - **Full+ and sub-agents available**: may dispatch two read-only review sub-agents in parallel (a Standards-agent and a Spec-agent). They **only report findings, never modify code**; the main agent consolidates and fixes per Step 6.
51
+ - **Sub-agents unavailable**: degrade to single pass — do not block the check.
39
52
 
40
- ### Code Quality
53
+ ### Standards (did we write it right)
54
+
55
+ #### Code Quality
41
56
 
42
57
  - [ ] Linter passes?
43
58
  - [ ] Type checker passes (if applicable)?
@@ -45,7 +60,7 @@ Run the project's lint, type-check, and test commands. Fix any failures before p
45
60
  - [ ] No debug logging left in?
46
61
  - [ ] No suppressed warnings or type-safety bypasses?
47
62
 
48
- ### Test Coverage (verification strength — not TDD)
63
+ #### Test Coverage (verification strength — not TDD)
49
64
 
50
65
  Follow `.cstl/spec/guides/verification-strength-guide.md` for **graded** validation depth by closeout profile. cstl does **not** mandate red-green TDD or per-function unit tests.
51
66
 
@@ -54,7 +69,22 @@ Follow `.cstl/spec/guides/verification-strength-guide.md` for **graded** validat
54
69
  - [ ] New function / bug fix → add or update tests **when the project's norms and task scope require it** — not as automatic TDD ceremony
55
70
  - [ ] `python ./.cstl/scripts/task.py validate <task>` passing JSONL schema **≠** task acceptance; substantive `verify.md` signals still required
56
71
 
57
- ### Durable Learning (Phase 3.3)
72
+ #### Fowler 12 Smells
73
+
74
+ Scan the change surface against `references/fowler-12-smells.md` (12 named smells, one-line criterion + don't-report boundary each). Report when hit, `N/A` when not — do not pad the report with misses.
75
+
76
+ #### False-positive calibration (AI cross-review)
77
+
78
+ Before prioritizing any CRITICAL/WARNING finding, read `.cstl/spec/guides/index.md` → **"When Verifying AI Cross-Review Results"**: verify each finding against the actual code; budget ~35% false-positive rate for AI reviews; typical patterns: trust boundary confusion, ignoring design comments, variable misreading.
79
+
80
+ ### Spec (did we build the right thing)
81
+
82
+ #### prd / design / implement fidelity
83
+
84
+ - [ ] Against `prd.md` Goal / Requirements / Acceptance Criteria: is the implementation faithful, and does it stay **within scope** (no over-scope)?
85
+ - [ ] Are `design.md` / `implement.md` boundaries violated (if present)?
86
+
87
+ #### Durable Learning (Phase 3.3)
58
88
 
59
89
  - [ ] `verify.md` contains exactly one token: `Learning decision: update-spec` | `no-update` | `unsure`
60
90
  - [ ] If `update-spec` or `unsure`: `research/learning-proposal.md` exists (or documented `N/A` with reason) and matches the decision
@@ -62,13 +92,13 @@ Follow `.cstl/spec/guides/verification-strength-guide.md` for **graded** validat
62
92
  - [ ] If `update-spec`: spec was written only after confirmation; `Spec update evidence:` points at `.cstl/spec/...`
63
93
  - [ ] No silent edits to `.cstl/spec/` without confirmation
64
94
 
65
- ### Spec Sync
95
+ #### Spec Sync
66
96
 
67
97
  - [ ] Does `.cstl/spec/` need updates? (route through semi-automatic flow: proposal → confirm → `cstl-update-spec`)
68
98
 
69
99
  > "If I fixed a bug or discovered something non-obvious, should I document it so future me won't hit the same issue?" → If YES, update the relevant spec doc.
70
100
 
71
- ### Retrieval evidence (when task used research / smart-search / optional pack)
101
+ #### Retrieval evidence (when task used research / smart-search / optional pack)
72
102
 
73
103
  - [ ] **`verify.md` lists unresolved retrieval gaps** — external facts still unverified, missing `research/` or `research/smart-search/` evidence, or claims without source/Git/test corroboration
74
104
  - [ ] If `{TASK}/research/retrieval-pack-latest.json` exists, top `contextPack.selected` items are cited or gaps are explicitly noted in `verify.md`
@@ -77,6 +107,24 @@ Follow `.cstl/spec/guides/verification-strength-guide.md` for **graded** validat
77
107
 
78
108
  When present, Read the pack and ensure `verify.md` has `## Evidence pack reference` citing `contextPack.selected` (`title`, `source`, `reference`, `score`) or explicit gaps. Empty `selected` with existing `research/` → note stale pack or scoring failure in `verify.md`.
79
109
 
110
+ #### Terminology / ADR consistency (one line)
111
+
112
+ - [ ] Read root `CONTEXT.md`: do terms in the change mix `_Avoid_` aliases? If an irreversible decision was introduced, should there be an ADR? (Prompt only — do not force creating a file.)
113
+
114
+ ### Report format
115
+
116
+ ```markdown
117
+ ## Standards findings
118
+ - [sev] ...
119
+
120
+ ## Spec findings
121
+ - [sev] ...
122
+
123
+ ## Summary
124
+ - Standards: N issues (not ranked against Spec)
125
+ - Spec: M issues
126
+ ```
127
+
80
128
  ## Step 5: Cross-Layer Dimensions (if applicable)
81
129
 
82
130
  Skip this step if your change is confined to a single layer.
@@ -110,4 +158,4 @@ Skip this step if your change is confined to a single layer.
110
158
 
111
159
  ## Step 6: Report and Fix
112
160
 
113
- Report violations found and fix them directly. Re-run project checks after fixes.
161
+ Report violations found (Standards and Spec sections per Step 4 format) and fix them directly. Parallel review sub-agents **do not fix** — the main agent owns all fixes. Re-run project checks after fixes.
@@ -0,0 +1,28 @@
1
+ # Fowler 12 Smells — Quick Criterion Reference
2
+
3
+ Scan the change surface line by line: report when a smell is hit, write `N/A` when not. Each criterion is a one-line "is" definition; the **don't-report** boundaries guard against false positives (paired with the ~35% false-positive discipline in `.cstl/spec/guides/index.md`).
4
+
5
+ 1. **Mysterious Name** — a name fails to express the code's intent (what it does / why it exists); the reader must read the implementation to understand it.
6
+ Don't report: evaluate only within the changed lines; do not opportunistically flag historical naming outside the change surface.
7
+ 2. **Duplicated Code** — the same structure/expression is repeated in 2+ places, so a change must be synced across several sites.
8
+ Don't report: small test boilerplate (e.g. a one-line setup) where extraction would reduce readability.
9
+ 3. **Feature Envy** — a method uses another object's data/methods far more than its own.
10
+ Don't report: an orchestration point that coordinates multiple collaborators is the method's job, not envy.
11
+ 4. **Data Clumps** — the same group of fields/parameters keep appearing together and should be bundled into an object.
12
+ Don't report: don't force types that only bundle without adding behavior (lazy creation discipline).
13
+ 5. **Primitive Obsession** — primitives (string/number/bool) carry concepts that deserve their own type (IDs, amounts, states).
14
+ Don't report: when the value domain is already constrained by an existing validation/config layer and adds no new behavior.
15
+ 6. **Repeated Switches** — the same discriminating field (kind/type/status) drives switch/if-else chains repeated in multiple places.
16
+ Don't report: 1–2 occurrences where that is the language idiom (e.g. ADT pattern matching).
17
+ 7. **Shotgun Surgery** — one conceptual change requires synchronized edits scattered across many places.
18
+ Don't report: when the multiple edits are concentrated in one cohesive module (locality holds).
19
+ 8. **Divergent Change** — one module changes frequently for many different reasons.
20
+ Don't report: when the module is an intentional facade/aggregator.
21
+ 9. **Speculative Generality** — abstractions/parameters/hooks are built for imagined future needs with no current caller.
22
+ Don't report: abstractions actually used in this change.
23
+ 10. **Message Chains** — a long call chain `a.b().c().d()` is needed to reach a target value, with intermediate links being pure pass-through.
24
+ Don't report: when the fluent/builder chain is itself the public interface.
25
+ 11. **Middle Man** — a class/method mostly forwards to somewhere else and adds little value of its own.
26
+ Don't report: when the forwarding provides encapsulation/seam value (e.g. an adapter sitting at a seam).
27
+ 12. **Refused Bequest** — a subclass barely uses inherited parent behavior/fields, making the inheritance relationship nominal.
28
+ Don't report: when inheritance is used only for type identity/interface satisfaction (is-a semantics) or the unused members are minimal.
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: cstl-handoff
3
+ description: "Condense the current session into a portable handoff document so a new agent / harness / directory can continue the work. User-invoked when the work needs to 'travel' (switch harness, switch directory or repo, hand to a colleague, or fork a side branch); writes to the OS temp directory and reports the full path."
4
+ argument-hint: "What will the next session use this for?"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # cstl-handoff — Session handoff
9
+
10
+ Condense the current session into a **portable** handoff document (`cstl-handoff-{yyyyMMdd-HHmmss}-{slug}.md`), written to the **OS temp directory** (does not pollute the workspace), so a new agent can continue without the original session. User-invoked (`disable-model-invocation: true` — the agent never triggers it on its own; it is written only when the user invokes `/cstl-handoff`).
11
+
12
+ ---
13
+
14
+ ## How this differs from a task `handoff.md` (read first)
15
+
16
+ **The two have opposite purposes — not interchangeable:**
17
+
18
+ | | This skill (session handoff) | Task `handoff.md` |
19
+ | --- | --- | --- |
20
+ | What | Portable cross-session summary | Child-task integration / implementation-window **delivery evidence** |
21
+ | Where | OS temp directory (volatile) | `.cstl/tasks/<task>/` (durable, archived with the task) |
22
+ | Lifecycle | Single transfer; dead once the work lands | Kept with the task evidence for Parent / review traces |
23
+
24
+ A task directory's `handoff.md` is the evidence file for `integrate-child` / `review-child`, **not** a session handoff document; the temp file this skill produces is **not** task evidence.
25
+
26
+ ## When to use / when not (five-question tree)
27
+
28
+ At stage boundaries first ask: **does the work still continue in this session?**
29
+
30
+ 1. **Continue** — default preference: keep going in this session
31
+ 2. **Clear** — context can be dropped; clear and restart
32
+ 3. **Handoff** — the work needs to travel → this skill
33
+ 4. **Subagent** — a side branch can run in parallel while the main session stays → dispatch a subagent (optionally with a handoff file)
34
+ 5. **Compact** — same harness, same directory, only intent compression needed → use the platform compact
35
+
36
+ **Handoff only when the work needs to travel**, triggered by exactly four situations:
37
+
38
+ | Situation | Why a file is needed |
39
+ | --- | --- |
40
+ | Switch harness (e.g. Cursor → Codex) | The new harness cannot see the old context |
41
+ | Switch directory / repo | Common for prototype directories and new repos |
42
+ | Hand to a colleague | They need something they can read independently |
43
+ | Fork a side branch (main line continues) | You stay in this session; a second agent takes a copy in parallel |
44
+
45
+ **Same harness, same directory continuation → compact / continue, not handoff.** The value of handoff is **portability**, not better compression; if only intent compression is wanted, `/compact` is the better fit.
46
+
47
+ ## Steps
48
+
49
+ 1. **Read the user argument**: the "next-session purpose" passed on invocation decides which whys to keep (trim key decision rationale by purpose — do not take everything verbatim).
50
+ 2. **Write the temp file** (path rules below).
51
+ 3. **Report the full absolute path** (required): temp paths are long and differ per OS; the user must get the path first.
52
+ 4. **Remind about volatility**: the temp file may be cleaned by the environment (Codex clears temp across sessions; `/private/tmp` is lost on reboot). For cross-hour / cross-harness continuation, ask the user to copy it to a durable location immediately (this also applies to other temp files referenced by the document).
53
+
54
+ ### Path rules (Windows first)
55
+
56
+ ```text
57
+ $env:TEMP\cstl-handoff-{yyyyMMdd-HHmmss}-{slug}.md
58
+ ```
59
+
60
+ - Windows: `$env:TEMP` (i.e. `%TEMP%`), e.g. `C:\Users\<user>\AppData\Local\Temp\cstl-handoff-20260808-153000-migrate-ts.md`
61
+ - Linux / macOS: `$TMPDIR/cstl-handoff-{yyyyMMdd-HHmmss}-{slug}.md` (`/tmp` when `$TMPDIR` is unset)
62
+ - After writing, always report the **full absolute path** to the user (Write-Host or plain text) — never just the filename.
63
+
64
+ ## Content template (English skeleton)
65
+
66
+ > Follow `artifact_locale` when the project uses it; English by default.
67
+
68
+ ```markdown
69
+ # Session handoff — <work summary>
70
+
71
+ > Generated by cstl-handoff at <time> · Next-session purpose: <user argument>
72
+
73
+ ## Goal
74
+ <what the in-flight work is trying to achieve>
75
+
76
+ ## Done
77
+ - <items>
78
+
79
+ ## Not done / Blocked
80
+ - <items>
81
+
82
+ ## Next steps
83
+ 1. <ordered steps>
84
+
85
+ ## Key whys (trimmed by next-session purpose)
86
+ - <decision + reason; whys unrelated to this purpose can be omitted>
87
+
88
+ ## Facts vs unverified beliefs
89
+ - Facts: <verified>
90
+ - Beliefs (unverified): <assumptions — never write them as facts>
91
+
92
+ ## Pointers (reference paths only, never copy bodies)
93
+ - Task: `.cstl/tasks/<task>/` (prd.md / design.md / implement.md / verify.md)
94
+ - Context: `CONTEXT.md` · Research: `<task>/research/`
95
+ - Prototype evidence (if a prototype was involved): `<task>/research/prototype-<slug>.py` (see `.cstl/spec/guides/prototype-guide.md` §9)
96
+ - Other: ADR / issue / commit / diff paths or URLs
97
+
98
+ ## Suggested skills (for the continuing agent)
99
+ - <skill name list, e.g. cstl-brainstorm, cstl-check, cstl-continue>
100
+ ```
101
+
102
+ ## Rules
103
+
104
+ - **Reference, don't copy**: anything already on disk (spec / PRD / ADR / issue / commit / diff) gets a path or URL only, never pasted verbatim. The document should be a small part of the session; a path list replaces copying.
105
+ - **Redact**: API keys, tokens, passwords, PII → replace with `<REDACTED>` before writing; when unsure, write `<REDACTED>`.
106
+ - **Facts vs beliefs**: unverified assumptions must be marked, never written as verified facts — the continuing agent will treat the document as a contract and will not re-check.
107
+ - **Prototype evidence pointer**: when the session involved a prototype, list the prototype evidence path in the pointers section (`prototype-guide.md` §9: git throwaway branch or a task `research/` path snapshot) and confirm the evidence is captured before cleanup.
108
+ - **Delivery**: have the new agent **read the file path**; do not stuff the summary into shell quotes to launch the new agent (backticks / `$(...)` get swallowed and silently truncated).
109
+
110
+ ## Anti-patterns
111
+
112
+ - ❌ Treating handoff as a long-lived document: it is a transit document for a single transfer and dies once the work lands (long-term facts belong in `AGENTS.md` / spec, not handoff)
113
+ - ❌ Pasting large spec / PRD / diff bodies (should reference paths only)
114
+ - ❌ Stuffing the summary into shell quotes to launch the next agent (silent truncation risk)
115
+ - ❌ Not reporting the full path / not reminding about temp volatility
116
+ - ❌ Writing a handoff for same-harness same-directory continuation (should compact / continue)
117
+ - ❌ Writing keys / tokens into the document
@@ -43,6 +43,12 @@ Your recommended answer defaults to the **minimal sufficient** option that still
43
43
  5. After the user answers, summarize the clarified requirement in one or two Chinese sentences.
44
44
  6. Execute directly once the requirement is clear enough.
45
45
 
46
+ ## Frontier support (optional)
47
+
48
+ Default is one question at a time (small-request clarification). When several questions can be asked together and their prerequisites are all decided (**≤3 questions**), list them in one round (numbered + recommended answers) and wait for a batch reply. Beyond that, keep one question at a time.
49
+
50
+ Facts the environment can self-check do not consume question slots: self-check first (Hard Constraints: always inspect local files first); while a fact check is pending it only blocks the questions that depend on it — ask the rest of the frontier without blocking.
51
+
46
52
  ## Escalation
47
53
 
48
54
  Escalate once when the clarified work no longer fits Micro-Grill:
@@ -14,6 +14,8 @@ This is mandatory. Before asking the user a question, first check whether the an
14
14
 
15
15
  Do not ask the user to confirm facts that the repository can answer. Ask only for product intent, preference, scope, risk tolerance, or decisions that remain ambiguous after inspection.
16
16
 
17
+ Read root `CONTEXT.md` (if present) before asking questions, and use its glossary terms.
18
+
17
19
  ## Thinking Principles
18
20
 
19
21
  These two principles shape *how* you grill, not just *what* you ask. Apply them throughout Phase A and B.
@@ -128,6 +130,19 @@ Stop micro-grill when no blocking open questions remain.
128
130
 
129
131
  Do not ask process questions ("should I search?"). Do not re-ask facts Discovery already confirmed.
130
132
 
133
+ ## Frontier rounds (question pacing)
134
+
135
+ PRD Grill questions advance in **frontier rounds**:
136
+
137
+ - **frontier** = all "prerequisite-decided" questions: their prerequisite decisions are resolved, so they can be asked now without guessing unheard answers.
138
+ - Each round lists the current frontier at once, each question numbered (❓Q1/Q2/Q3…) with a recommended answer.
139
+ - **≤3 questions per round**; split into more rounds beyond that to avoid information overload.
140
+ - **Facts are the agent's job**: when a frontier question needs environment facts, dispatch a sub-agent to check; while exploration is pending it counts as an unresolved prerequisite that only blocks its downstream questions — ask the rest of the frontier anyway.
141
+ - **Decisions are the user's job**: every decision waits for the user's answer; do not answer for them.
142
+ - A user answer reshapes the design tree and the frontier extrapolates into the next round; **an empty frontier = the design tree is exhausted** — summarize the consensus and confirm before treating planning as done.
143
+
144
+ > **Override note:** this section overrides the "Ask the questions one at a time" line in the Non-Negotiable Interview Contract — Phase B (PRD Grill) pacing follows these frontier rounds rather than one-question-at-a-time; `cstl-micro-grill` still defaults to one question at a time.
145
+
131
146
  ## Question Rules (Phase B only)
132
147
 
133
148
  Each question must include:
@@ -144,6 +144,20 @@ If `contextPack.selected` is empty but research artifacts exist, document why (b
144
144
 
145
145
  ## Report Format
146
146
 
147
+ Report **Standards and Spec in two separate sections** — never merge them into a single severity ranking (dual-axis, aligned with the `cstl-check` skill). Standards findings first, then Spec findings; the same issue may be cross-referenced on both sides, but one axis must not mask the other.
148
+
149
+ ```markdown
150
+ ## Standards findings
151
+ - [sev] <file>:<line> - <finding>
152
+
153
+ ## Spec findings
154
+ - [sev] <file>:<line> - <finding>
155
+
156
+ ## Summary
157
+ - Standards: N issues (not ranked against Spec)
158
+ - Spec: M issues
159
+ ```
160
+
147
161
  ```markdown
148
162
  ## Self-Check Complete
149
163