specdo 1.0.3 → 1.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-content.d.ts","sourceRoot":"","sources":["../../../src/core/skill-content/workflow-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AA0/CD,eAAO,MAAM,eAAe,EAAE,oBAAoB,EAmDjD,CAAC"}
1
+ {"version":3,"file":"workflow-content.d.ts","sourceRoot":"","sources":["../../../src/core/skill-content/workflow-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AA2/CD,eAAO,MAAM,eAAe,EAAE,oBAAoB,EAmDjD,CAAC"}
@@ -237,21 +237,22 @@ accepted without re-asking.
237
237
  context.json with correct schema. Hand-written files will fail downstream
238
238
  validation and propose.
239
239
 
240
- ### Why focus questions but inject all domains?
240
+ ### Why focus questions and inject matched domains?
241
241
 
242
242
  During explore, you ask questions only about selected domains — this keeps
243
243
  the user focused and avoids overwhelming them with 48 questions across all
244
- 6 domains. But when artifacts are generated downstream, **ALL 6 domains'
245
- checklists are injected** into design.md and tasks.md at propose time.
246
- At apply time, domains are matched dynamically per task via signal scoring
247
- against the current task title, falling back to the domains used during
248
- propose. (See \`specdo-apply\` for the full \`implement\` clause injection logic.)
249
-
250
- This ensures every production-grade concern (security, architecture,
251
- operations, backend, quality, frontend) gets reviewed in the generated
252
- artifacts even domains the user didn't discuss explicitly during explore.
253
- The \`--domains\` flag controls only **which domains to ask questions about**,
254
- not which domain checklists are injected at propose/apply time.
244
+ 6 domains. At propose time, **only the matched domains' checklists are
245
+ injected** into design.md and tasks.md domains that weren't matched during
246
+ explore are skipped entirely to keep the generated artifacts relevant and
247
+ concise. At apply time, domains are matched dynamically per task via signal
248
+ scoring against the current task title, falling back to the domains used
249
+ during propose. (See \`specdo-apply\` for the full \`implement\` clause
250
+ injection logic.)
251
+
252
+ This ensures every domain concern that was actually explored gets reviewed
253
+ in the generated artifacts. The \`--domains\` flag controls both which domains
254
+ you ask questions about **and** which domain checklists are injected at
255
+ propose/apply time.
255
256
 
256
257
  ## When to use
257
258
 
@@ -412,9 +413,9 @@ const EXPLORE_REFERENCE = `# specdo explore — Reference
412
413
  during explore (e.g. \`frontend,backend\`). When provided, \`scoreDomains()\`
413
414
  is bypassed. Each named domain gets score 1.0 and reason "Agent-selected
414
415
  via --domains". Unknown domain names cause exit code 2.
415
- **Note**: \`--domains\` controls only which domains you ask questions about.
416
- All 6 domains' checklists are still injected at propose/apply time for
417
- production-grade completeness.
416
+ **Note**: \`--domains\` also controls which domain checklists are injected
417
+ at propose/apply time. Only matched domains get their checklists injected
418
+ unmatched domains are skipped to keep tasks.md and design.md relevant.
418
419
  - \`--context <text>\` — Free-text summary of discovery context collected
419
420
  by the agent. Written to \`explore.collectedContext\`.
420
421
  - \`--depth <level>\` — Self-assessed depth: \`shallow\`, \`standard\`,
@@ -451,32 +452,32 @@ pool ranking:
451
452
  ## Slug rules
452
453
 
453
454
  - Derived from idea text: lowercase, alphanumerics + hyphens, max 50 chars
454
- - Non-ASCII input (Chinese, Japanese, etc.) produces a random fallback slug
455
- (e.g. \`change-<timestamp>-<random>\`). Always pass \`--change <slug>\`
456
- for non-English ideas to get a meaningful name.
455
+ - **Non-ASCII input (Chinese, Japanese, etc.) fails with exit code 1.** Always
456
+ pass \`--change <slug>\` for non-English ideas. The slug must be lowercase
457
+ ASCII letters, digits, and hyphens only.
457
458
  - Collisions resolved by appending \`-2\`, \`-3\`, ... (never overwrite)
458
459
  - Pass \`--change <slug>\` to force a specific name
459
460
 
460
461
  ## Exit codes
461
462
 
462
463
  - \`0\` — explore stage stored; \`completedAt\` set (also emitted for \`--llm\` prompt mode)
463
- - \`1\` — workspace not initialized (\`specdo/config.yaml\` missing), idea string empty, invalid --change name, invalid \`--answers\` JSON, or change directory already exists without explicit \`--change\`
464
+ - \`1\` — workspace not initialized (\`specdo/config.yaml\` missing), idea string empty, invalid --change name, non-ASCII input without \`--change\`, zero auto-matched domains without \`--change\`, invalid \`--answers\` JSON, or change directory already exists without explicit \`--change\`
464
465
  - \`2\` — unknown domain name in \`--domains\`, invalid \`--llm-questions\` JSON, or payload exceeds size limit
465
466
  - \`3\` — filesystem write failure (e.g. \`specdo/changes/\` not writable)
466
467
 
467
468
  ## Domain injection modes
468
469
 
469
470
  \`--domains\` controls which domains to **ask questions about** during
470
- explore. At propose time, **all 6 domains' checklists are always
471
- injected** into design.md and tasks.md for production-grade completeness.
471
+ explore AND which domain checklists are injected at propose time.
472
472
  At apply time, domain focus is selected dynamically per task via signal
473
473
  matching against the task title.
474
474
 
475
475
  1. **Agent-driven** (\`--domains <list>\`): You select which domains to focus
476
476
  questions on. The explore phase is shorter and more focused.
477
477
  2. **Auto-scored** (no \`--domains\`): \`scoreDomains()\` runs signal matching
478
- to suggest focus domains. May produce zero matches for non-English input.
479
- When zero matches occur, the CLI suggests using \`--domains\`.
478
+ to suggest focus domains. CJK (Chinese/Japanese/Korean) input is enhanced
479
+ with an English keyword translation map for better matching. When zero
480
+ matches occur, the CLI exits with code 1 and suggests using \`--domains\`.
480
481
 
481
482
  ## Recovery
482
483
 
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-content.js","sourceRoot":"","sources":["../../../src/core/skill-content/workflow-content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-content.js","sourceRoot":"","sources":["../../../src/core/skill-content/workflow-content.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specdo",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Self-contained CLI for spec-driven development with built-in domain knowledge",
5
5
  "keywords": [
6
6
  "specdo",