@skitterbyte/skitterspec 23.0.0 → 23.0.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.
@@ -53,8 +53,9 @@ plain `cd` and run the `then, run:` line where there is one:
53
53
  cd "<worktreePath>" && skitterspec spec-env bootstrap <name>
54
54
  ```
55
55
 
56
- That runs the project's `setup` in the worktree and stops at the first failing
57
- command, naming it. The Bash working directory persists between calls, so from
56
+ That seeds the project's gitignored files into the worktree, then runs its
57
+ `setup`, and stops at the first failing step, naming it. There is no stack: a
58
+ specless branch never gets an env file or Docker. The Bash working directory persists between calls, so from
58
59
  here on the work happens on its own branch.
59
60
 
60
61
  **The worktree steps are the engine's to run, never yours.** Seeding the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skitterbyte/skitterspec",
3
- "version": "23.0.0",
3
+ "version": "23.0.1",
4
4
  "description": "Spec-driven development for Claude Code \u2014 a tracker-free filesystem workflow: lifecycle skills and per-spec isolation. For Linear sync, install @skitterbyte/skitterspec-linear instead.",
5
5
  "keywords": [
6
6
  "claude",
package/src/cli.js CHANGED
@@ -847,7 +847,8 @@ function specEnvNospec(dir, config, name, flags = {}) {
847
847
  ? ` git worktree add ${spec.worktreePath} ${spec.branch}`
848
848
  : ` git worktree add ${spec.worktreePath} -b ${spec.branch}`,
849
849
  )
850
- if ((config.setup || []).length) out.push(...bootstrapLines(name))
850
+ const seeds = (config.seedFiles && config.seedFiles.files) || []
851
+ if (seeds.length || (config.setup || []).length) out.push(...bootstrapLines(name))
851
852
  if (flags.json) {
852
853
  process.stdout.write(
853
854
  JSON.stringify(
@@ -1173,9 +1174,11 @@ function specEnvBootstrap(dir, config, specArg, flags = {}) {
1173
1174
 
1174
1175
  let steps
1175
1176
  // A `/no-spec` record — not the authoring record `up --docs` writes for a
1176
- // spec not yet on disk, which is a spec and plans like one.
1177
+ // spec not yet on disk, which is a spec and plans like one. It seeds and runs
1178
+ // `setup` exactly as a spec does, since a `setup` that reads a seeded `.env`
1179
+ // fails without it; what it never has is a stack, so no slot is consulted.
1177
1180
  if (spec.specless && !spec.unwritten) {
1178
- steps = docs ? [] : (config.setup || []).map((command) => ({ kind: 'setup', command }))
1181
+ steps = worktreeSteps(spec, null, config, { docs, wantsDocker: false })
1179
1182
  } else {
1180
1183
  const compose = composeFilePresent(dir, config)
1181
1184
  const { wantsDocker } = resolveStack(spec, config, { docs, composeFilePresent: compose })