Compare commits

...
Author SHA1 Message Date
Tabish Bidiwale b297c41e3e Merge remote-tracking branch 'origin/main' into simplify-setup-config 2026-01-20 15:13:59 -08:00
Tabish Bidiwale a29a68423c docs: add napkin-changes proposal
Proposal to introduce lightweight "napkin" files (.napkin.md) as precursors
to full changes. Napkins capture user intent immediately when starting a
change, then get promoted to full change folders with proposals.

Key points:
- Napkins live in openspec/changes/ as <name>.napkin.md files
- Promoted to folders via /opsx:continue
- Deleted after promotion (content seeds proposal)
- Solves the "lost intent" problem when creating new changes
2026-01-20 15:11:28 -08:00
Tabish Bidiwale 0bbdcc7582 fix(test): remove invalid forceExit config and add proper teardown
- Remove `forceExit: true` from vitest.config.ts (Jest option, not Vitest)
- Add actual teardown logic in vitest.setup.ts that forces exit after 1s
  grace period if processes are still hanging
2026-01-20 14:27:32 -08:00
Tabish Bidiwale 3896e2ab3a docs: add schema-alias-support change proposal
Proposal to add schema alias support so `openspec-default` and `spec-driven`
can be used interchangeably, enabling a rename without breaking existing configs.
2026-01-20 12:43:28 -08:00
Tabish Bidiwale 9384c57dbe refactor(setup): simplify config creation and fix test hanging
- Replace interactive config prompts with automatic config creation using
  default schema. The generated config includes helpful comments explaining
  context and rules options.
- Remove unused promptForConfig, promptForArtifactRules, and isExitPromptError
  functions from config-prompts.ts
- Add forceExit: true to vitest config to prevent worker processes from hanging
  after tests complete
2026-01-20 12:40:58 -08:00
2 changed files with 52 additions and 0 deletions
@@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-01-20
@@ -0,0 +1,50 @@
## Why
When users start a new change with `/opsx:new`, their initial description gets lost. The system creates an empty folder and shows a template, but the user's intent—the thing they said they wanted to build—isn't captured anywhere. They have to describe it again when creating the proposal.
This adds friction and breaks the natural flow of: idea → capture → expand → implement.
## What Changes
- Introduce "napkin" as a lightweight precursor to a full change
- Napkins are simple markdown files: `<name>.napkin.md` in `openspec/changes/`
- When promoted via `/opsx:continue`, napkin content seeds the proposal and the napkin file is deleted
- Full changes remain as folders with artifacts (no change to existing behavior)
**File structure:**
```
openspec/changes/
├── dark-mode.napkin.md ← napkin (lightweight, just an idea)
├── auth-refactor/ ← full change (folder with artifacts)
│ ├── .openspec.yaml
│ ├── proposal.md
│ └── ...
```
**Lifecycle:**
1. `/opsx:new "add dark mode"` → creates `dark-mode.napkin.md` with user's description
2. User can edit, add notes, refine thinking
3. `/opsx:continue` → promotes napkin to full change folder, creates `proposal.md` using napkin content
4. `dark-mode.napkin.md` is deleted after promotion
## Capabilities
### New Capabilities
- `napkin-changes`: Support for lightweight napkin files (`.napkin.md`) as precursors to full changes, including creation, listing, and promotion to full change folders
### Modified Capabilities
- `change-creation`: Add support for creating napkin files instead of folders
- `cli-change`: Update `openspec new change` to support napkin creation
- `cli-list`: Show napkins alongside full changes in `openspec list` output
## Impact
- `src/utils/change-utils.ts` - Add napkin creation/detection utilities
- `src/commands/change.ts` - Support `--napkin` flag or make napkin the default
- `src/commands/list.ts` - Include napkins in change listing
- `.claude/skills/openspec-new-change/` - Update to create napkins by default
- `.claude/skills/openspec-continue-change/` - Handle napkin → full change promotion
- `.claude/commands/opsx/new.md` - Update skill instructions
- `.claude/commands/opsx/continue.md` - Update to handle napkin promotion