sauron-cli 1.3.0 → 1.4.0
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.
- package/README.md +4 -2
- package/dist/index.js +8 -8
- package/package.json +1 -1
- package/templates/.agents/rules/memory.md +68 -68
- package/templates/.agents/skills/wiki/SKILL.md +14 -14
- package/55ea973d-e255-4f08-a313-a5d68243bd2d.png +0 -0
- package/OpenSpec-main/.actrc +0 -1
- package/OpenSpec-main/.changeset/README.md +0 -97
- package/OpenSpec-main/.changeset/config.json +0 -15
- package/OpenSpec-main/.coderabbit.yaml +0 -11
- package/OpenSpec-main/.devcontainer/README.md +0 -92
- package/OpenSpec-main/.devcontainer/devcontainer.json +0 -68
- package/OpenSpec-main/.github/CODEOWNERS +0 -2
- package/OpenSpec-main/.github/workflows/README.md +0 -20
- package/OpenSpec-main/.github/workflows/ci.yml +0 -346
- package/OpenSpec-main/.github/workflows/release-prepare.yml +0 -60
- package/OpenSpec-main/CHANGELOG.md +0 -594
- package/OpenSpec-main/LICENSE +0 -22
- package/OpenSpec-main/MAINTAINERS.md +0 -17
- package/OpenSpec-main/README.md +0 -206
- package/OpenSpec-main/README_OLD.md +0 -475
- package/OpenSpec-main/assets/openspec_bg.png +0 -0
- package/OpenSpec-main/assets/openspec_dashboard.png +0 -0
- package/OpenSpec-main/assets/openspec_pixel_dark.svg +0 -89
- package/OpenSpec-main/assets/openspec_pixel_light.svg +0 -89
- package/OpenSpec-main/bin/openspec.js +0 -5
- package/OpenSpec-main/build.js +0 -31
- package/OpenSpec-main/eslint.config.js +0 -42
- package/OpenSpec-main/flake.lock +0 -27
- package/OpenSpec-main/flake.nix +0 -114
- package/OpenSpec-main/openspec/changes/IMPLEMENTATION_ORDER.md +0 -68
- package/OpenSpec-main/openspec/changes/add-artifact-regeneration-support/proposal.md +0 -136
- package/OpenSpec-main/openspec/changes/add-change-stacking-awareness/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/add-change-stacking-awareness/proposal.md +0 -93
- package/OpenSpec-main/openspec/changes/add-change-stacking-awareness/specs/change-creation/spec.md +0 -15
- package/OpenSpec-main/openspec/changes/add-change-stacking-awareness/specs/change-stacking-workflow/spec.md +0 -65
- package/OpenSpec-main/openspec/changes/add-change-stacking-awareness/specs/cli-change/spec.md +0 -27
- package/OpenSpec-main/openspec/changes/add-change-stacking-awareness/specs/openspec-conventions/spec.md +0 -29
- package/OpenSpec-main/openspec/changes/add-change-stacking-awareness/tasks.md +0 -39
- package/OpenSpec-main/openspec/changes/add-global-install-scope/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/add-global-install-scope/design.md +0 -161
- package/OpenSpec-main/openspec/changes/add-global-install-scope/proposal.md +0 -101
- package/OpenSpec-main/openspec/changes/add-global-install-scope/specs/ai-tool-paths/spec.md +0 -35
- package/OpenSpec-main/openspec/changes/add-global-install-scope/specs/cli-config/spec.md +0 -21
- package/OpenSpec-main/openspec/changes/add-global-install-scope/specs/cli-init/spec.md +0 -28
- package/OpenSpec-main/openspec/changes/add-global-install-scope/specs/cli-update/spec.md +0 -34
- package/OpenSpec-main/openspec/changes/add-global-install-scope/specs/command-generation/spec.md +0 -22
- package/OpenSpec-main/openspec/changes/add-global-install-scope/specs/global-config/spec.md +0 -24
- package/OpenSpec-main/openspec/changes/add-global-install-scope/specs/installation-scope/spec.md +0 -71
- package/OpenSpec-main/openspec/changes/add-global-install-scope/tasks.md +0 -61
- package/OpenSpec-main/openspec/changes/add-qa-smoke-harness/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/add-qa-smoke-harness/proposal.md +0 -45
- package/OpenSpec-main/openspec/changes/add-qa-smoke-harness/specs/developer-qa-workflow/spec.md +0 -49
- package/OpenSpec-main/openspec/changes/add-tool-command-surface-capabilities/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/add-tool-command-surface-capabilities/proposal.md +0 -111
- package/OpenSpec-main/openspec/changes/add-tool-command-surface-capabilities/specs/cli-init/spec.md +0 -121
- package/OpenSpec-main/openspec/changes/add-tool-command-surface-capabilities/specs/cli-update/spec.md +0 -48
- package/OpenSpec-main/openspec/changes/add-tool-command-surface-capabilities/tasks.md +0 -53
- package/OpenSpec-main/openspec/changes/archive/2025-01-11-add-update-command/design.md +0 -86
- package/OpenSpec-main/openspec/changes/archive/2025-01-11-add-update-command/proposal.md +0 -29
- package/OpenSpec-main/openspec/changes/archive/2025-01-11-add-update-command/specs/cli-update/spec.md +0 -59
- package/OpenSpec-main/openspec/changes/archive/2025-01-11-add-update-command/tasks.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2025-01-13-add-list-command/proposal.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2025-01-13-add-list-command/specs/cli-list/spec.md +0 -69
- package/OpenSpec-main/openspec/changes/archive/2025-01-13-add-list-command/tasks.md +0 -26
- package/OpenSpec-main/openspec/changes/archive/2025-08-05-initialize-typescript-project/design.md +0 -64
- package/OpenSpec-main/openspec/changes/archive/2025-08-05-initialize-typescript-project/proposal.md +0 -18
- package/OpenSpec-main/openspec/changes/archive/2025-08-05-initialize-typescript-project/tasks.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2025-08-06-add-init-command/design.md +0 -104
- package/OpenSpec-main/openspec/changes/archive/2025-08-06-add-init-command/proposal.md +0 -30
- package/OpenSpec-main/openspec/changes/archive/2025-08-06-add-init-command/specs/cli-init/spec.md +0 -148
- package/OpenSpec-main/openspec/changes/archive/2025-08-06-add-init-command/tasks.md +0 -38
- package/OpenSpec-main/openspec/changes/archive/2025-08-06-adopt-future-state-storage/proposal.md +0 -24
- package/OpenSpec-main/openspec/changes/archive/2025-08-06-adopt-future-state-storage/specs/openspec-conventions/spec.md +0 -120
- package/OpenSpec-main/openspec/changes/archive/2025-08-06-adopt-future-state-storage/tasks.md +0 -38
- package/OpenSpec-main/openspec/changes/archive/2025-08-11-add-complexity-guidelines/proposal.md +0 -13
- package/OpenSpec-main/openspec/changes/archive/2025-08-11-add-complexity-guidelines/specs/openspec-docs/README.md +0 -472
- package/OpenSpec-main/openspec/changes/archive/2025-08-11-add-complexity-guidelines/tasks.md +0 -9
- package/OpenSpec-main/openspec/changes/archive/2025-08-13-add-archive-command/proposal.md +0 -15
- package/OpenSpec-main/openspec/changes/archive/2025-08-13-add-archive-command/specs/cli-archive/spec.md +0 -111
- package/OpenSpec-main/openspec/changes/archive/2025-08-13-add-archive-command/tasks.md +0 -44
- package/OpenSpec-main/openspec/changes/archive/2025-08-13-add-diff-command/proposal.md +0 -19
- package/OpenSpec-main/openspec/changes/archive/2025-08-13-add-diff-command/specs/cli-diff/spec.md +0 -77
- package/OpenSpec-main/openspec/changes/archive/2025-08-13-add-diff-command/tasks.md +0 -23
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-change-commands/design.md +0 -56
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-change-commands/proposal.md +0 -17
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-change-commands/specs/cli-change/spec.md +0 -48
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-change-commands/specs/cli-list/spec.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-change-commands/tasks.md +0 -34
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-interactive-show-command/proposal.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-interactive-show-command/specs/cli-change/spec.md +0 -23
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-interactive-show-command/specs/cli-show/spec.md +0 -83
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-interactive-show-command/specs/cli-spec/spec.md +0 -23
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-interactive-show-command/tasks.md +0 -142
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-skip-specs-archive-option/proposal.md +0 -13
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-skip-specs-archive-option/specs/cli-archive/spec.md +0 -191
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-skip-specs-archive-option/tasks.md +0 -57
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-spec-commands/design.md +0 -45
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-spec-commands/proposal.md +0 -19
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-spec-commands/specs/cli-spec/spec.md +0 -43
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-spec-commands/tasks.md +0 -22
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-zod-validation/design.md +0 -104
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-zod-validation/proposal.md +0 -22
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-zod-validation/specs/cli-archive/spec.md +0 -18
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-zod-validation/specs/cli-diff/spec.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-add-zod-validation/tasks.md +0 -59
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/proposal.md +0 -93
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/specs/cli-archive/spec.md +0 -48
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/specs/cli-diff/spec.md +0 -45
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/specs/openspec-conventions/spec.md +0 -101
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/tasks.md +0 -55
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/design.md +0 -19
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/proposal.md +0 -67
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/specs/cli-list/spec.md +0 -57
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/specs/openspec-conventions/spec.md +0 -23
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/tasks.md +0 -27
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/proposal.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/specs/cli-change/spec.md +0 -22
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/specs/cli-spec/spec.md +0 -23
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/specs/cli-validate/spec.md +0 -149
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/tasks.md +0 -81
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-fix-update-tool-selection/proposal.md +0 -40
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-fix-update-tool-selection/specs/cli-update/spec.md +0 -23
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-fix-update-tool-selection/tasks.md +0 -21
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-improve-validate-error-messages/proposal.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-improve-validate-error-messages/specs/cli-validate/spec.md +0 -55
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-improve-validate-error-messages/tasks.md +0 -21
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-structured-spec-format/proposal.md +0 -36
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-structured-spec-format/specs/openspec-conventions/spec.md +0 -192
- package/OpenSpec-main/openspec/changes/archive/2025-08-19-structured-spec-format/tasks.md +0 -19
- package/OpenSpec-main/openspec/changes/archive/2025-09-12-add-view-dashboard-command/proposal.md +0 -38
- package/OpenSpec-main/openspec/changes/archive/2025-09-12-add-view-dashboard-command/specs/cli-view/spec.md +0 -109
- package/OpenSpec-main/openspec/changes/archive/2025-09-12-add-view-dashboard-command/tasks.md +0 -47
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-agents-md-config/proposal.md +0 -28
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-agents-md-config/specs/cli-init/spec.md +0 -71
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-agents-md-config/specs/cli-update/spec.md +0 -41
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-agents-md-config/tasks.md +0 -17
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-multi-agent-init/proposal.md +0 -35
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-multi-agent-init/specs/cli-init/spec.md +0 -45
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-multi-agent-init/tasks.md +0 -16
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-slash-command-support/proposal.md +0 -119
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-slash-command-support/specs/cli-init/spec.md +0 -21
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-slash-command-support/specs/cli-update/spec.md +0 -22
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-add-slash-command-support/tasks.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-improve-cli-e2e-plan/proposal.md +0 -19
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-improve-cli-e2e-plan/tasks.md +0 -9
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-improve-deterministic-tests/proposal.md +0 -78
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-improve-deterministic-tests/tasks.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-improve-init-onboarding/proposal.md +0 -13
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-improve-init-onboarding/specs/cli-init/spec.md +0 -92
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-improve-init-onboarding/tasks.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-remove-diff-command/proposal.md +0 -81
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-remove-diff-command/tasks.md +0 -37
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-sort-active-changes-by-progress/proposal.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-sort-active-changes-by-progress/specs/cli-view/spec.md +0 -9
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-sort-active-changes-by-progress/tasks.md +0 -8
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-agent-file-name/proposal.md +0 -29
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-agent-file-name/specs/cli-init/spec.md +0 -40
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-agent-file-name/specs/cli-update/spec.md +0 -22
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-agent-file-name/specs/openspec-conventions/spec.md +0 -27
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-agent-file-name/tasks.md +0 -22
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-agent-instructions/design.md +0 -130
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-agent-instructions/proposal.md +0 -117
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-agent-instructions/tasks.md +0 -69
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-markdown-parser-crlf/proposal.md +0 -19
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-markdown-parser-crlf/specs/cli-validate/spec.md +0 -9
- package/OpenSpec-main/openspec/changes/archive/2025-09-29-update-markdown-parser-crlf/tasks.md +0 -11
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-codex-slash-command-support/proposal.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-codex-slash-command-support/specs/cli-init/spec.md +0 -56
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-codex-slash-command-support/specs/cli-update/spec.md +0 -41
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-codex-slash-command-support/tasks.md +0 -19
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-github-copilot-prompts/proposal.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-github-copilot-prompts/specs/cli-init/spec.md +0 -48
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-github-copilot-prompts/specs/cli-update/spec.md +0 -48
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-github-copilot-prompts/tasks.md +0 -30
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-kilocode-workflows/proposal.md +0 -17
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-kilocode-workflows/specs/cli-init/spec.md +0 -43
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-kilocode-workflows/specs/cli-update/spec.md +0 -27
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-kilocode-workflows/tasks.md +0 -15
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-non-interactive-init-options/proposal.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-non-interactive-init-options/specs/cli-init/spec.md +0 -39
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-non-interactive-init-options/tasks.md +0 -17
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-windsurf-workflows/proposal.md +0 -17
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-windsurf-workflows/specs/cli-init/spec.md +0 -42
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-windsurf-workflows/specs/cli-update/spec.md +0 -27
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-add-windsurf-workflows/tasks.md +0 -17
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-enhance-validation-error-messages/proposal.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-enhance-validation-error-messages/specs/cli-validate/spec.md +0 -39
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-enhance-validation-error-messages/tasks.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-improve-agent-instruction-usability/proposal.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-improve-agent-instruction-usability/specs/docs-agent-instructions/spec.md +0 -33
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-improve-agent-instruction-usability/tasks.md +0 -11
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-slim-root-agents-file/proposal.md +0 -13
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-slim-root-agents-file/tasks.md +0 -15
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-cli-init-enter-selection/proposal.md +0 -14
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-cli-init-enter-selection/specs/cli-init/spec.md +0 -10
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-cli-init-enter-selection/tasks.md +0 -8
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-cli-init-root-agents/proposal.md +0 -15
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-cli-init-root-agents/specs/cli-init/spec.md +0 -32
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-cli-init-root-agents/specs/cli-update/spec.md +0 -10
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-cli-init-root-agents/tasks.md +0 -11
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-release-automation/proposal.md +0 -49
- package/OpenSpec-main/openspec/changes/archive/2025-10-14-update-release-automation/tasks.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-archive-command-arguments/proposal.md +0 -17
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-archive-command-arguments/specs/cli-update/spec.md +0 -32
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-archive-command-arguments/tasks.md +0 -15
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-cline-support/proposal.md +0 -15
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-cline-support/specs/cli-init/spec.md +0 -97
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-cline-support/tasks.md +0 -19
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-crush-support/proposal.md +0 -13
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-crush-support/specs/cli-init/spec.md +0 -67
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-crush-support/tasks.md +0 -7
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-factory-slash-commands/proposal.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-factory-slash-commands/specs/cli-init/spec.md +0 -54
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-factory-slash-commands/specs/cli-update/spec.md +0 -54
- package/OpenSpec-main/openspec/changes/archive/2025-10-22-add-factory-slash-commands/tasks.md +0 -11
- package/OpenSpec-main/openspec/changes/archive/2025-11-06-add-shell-completions/design.md +0 -525
- package/OpenSpec-main/openspec/changes/archive/2025-11-06-add-shell-completions/proposal.md +0 -29
- package/OpenSpec-main/openspec/changes/archive/2025-11-06-add-shell-completions/specs/cli-completion/spec.md +0 -300
- package/OpenSpec-main/openspec/changes/archive/2025-11-06-add-shell-completions/tasks.md +0 -81
- package/OpenSpec-main/openspec/changes/archive/2025-12-20-add-global-config-dir/design.md +0 -105
- package/OpenSpec-main/openspec/changes/archive/2025-12-20-add-global-config-dir/proposal.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2025-12-20-add-global-config-dir/specs/global-config/spec.md +0 -76
- package/OpenSpec-main/openspec/changes/archive/2025-12-20-add-global-config-dir/tasks.md +0 -26
- package/OpenSpec-main/openspec/changes/archive/2025-12-21-add-config-command/design.md +0 -89
- package/OpenSpec-main/openspec/changes/archive/2025-12-21-add-config-command/proposal.md +0 -60
- package/OpenSpec-main/openspec/changes/archive/2025-12-21-add-config-command/specs/cli-config/spec.md +0 -213
- package/OpenSpec-main/openspec/changes/archive/2025-12-21-add-config-command/tasks.md +0 -28
- package/OpenSpec-main/openspec/changes/archive/2025-12-23-extend-shell-completions/proposal.md +0 -15
- package/OpenSpec-main/openspec/changes/archive/2025-12-23-extend-shell-completions/specs/cli-completion/spec.md +0 -328
- package/OpenSpec-main/openspec/changes/archive/2025-12-23-extend-shell-completions/tasks.md +0 -49
- package/OpenSpec-main/openspec/changes/archive/2025-12-24-add-artifact-graph-core/design.md +0 -197
- package/OpenSpec-main/openspec/changes/archive/2025-12-24-add-artifact-graph-core/proposal.md +0 -18
- package/OpenSpec-main/openspec/changes/archive/2025-12-24-add-artifact-graph-core/specs/artifact-graph/spec.md +0 -103
- package/OpenSpec-main/openspec/changes/archive/2025-12-24-add-artifact-graph-core/tasks.md +0 -61
- package/OpenSpec-main/openspec/changes/archive/2025-12-25-add-change-manager/design.md +0 -74
- package/OpenSpec-main/openspec/changes/archive/2025-12-25-add-change-manager/proposal.md +0 -45
- package/OpenSpec-main/openspec/changes/archive/2025-12-25-add-change-manager/specs/change-creation/spec.md +0 -63
- package/OpenSpec-main/openspec/changes/archive/2025-12-25-add-change-manager/tasks.md +0 -30
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-add-artifact-workflow-cli/design.md +0 -112
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-add-artifact-workflow-cli/proposal.md +0 -33
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-add-artifact-workflow-cli/specs/cli-artifact-workflow/spec.md +0 -153
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-add-artifact-workflow-cli/tasks.md +0 -48
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-add-instruction-loader/design.md +0 -149
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-add-instruction-loader/proposal.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-add-instruction-loader/specs/instruction-loader/spec.md +0 -70
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-add-instruction-loader/tasks.md +0 -13
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-restructure-schema-directories/design.md +0 -129
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-restructure-schema-directories/proposal.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-restructure-schema-directories/specs/artifact-graph/spec.md +0 -49
- package/OpenSpec-main/openspec/changes/archive/2025-12-28-restructure-schema-directories/tasks.md +0 -32
- package/OpenSpec-main/openspec/changes/archive/2025-12-29-unify-change-state-model/design.md +0 -151
- package/OpenSpec-main/openspec/changes/archive/2025-12-29-unify-change-state-model/proposal.md +0 -101
- package/OpenSpec-main/openspec/changes/archive/2025-12-29-unify-change-state-model/specs/cli-artifact-workflow/spec.md +0 -109
- package/OpenSpec-main/openspec/changes/archive/2025-12-29-unify-change-state-model/specs/cli-view/spec.md +0 -60
- package/OpenSpec-main/openspec/changes/archive/2025-12-29-unify-change-state-model/tasks.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2025-12-30-add-antigravity-support/proposal.md +0 -11
- package/OpenSpec-main/openspec/changes/archive/2025-12-30-add-antigravity-support/specs/cli-init/spec.md +0 -105
- package/OpenSpec-main/openspec/changes/archive/2025-12-30-add-antigravity-support/specs/cli-update/spec.md +0 -92
- package/OpenSpec-main/openspec/changes/archive/2025-12-30-add-antigravity-support/tasks.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2025-12-30-fix-cline-workflows-implementation/proposal.md +0 -13
- package/OpenSpec-main/openspec/changes/archive/2025-12-30-fix-cline-workflows-implementation/specs/cli-init/spec.md +0 -105
- package/OpenSpec-main/openspec/changes/archive/2025-12-30-fix-cline-workflows-implementation/specs/cli-update/spec.md +0 -92
- package/OpenSpec-main/openspec/changes/archive/2025-12-30-fix-cline-workflows-implementation/tasks.md +0 -13
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-agent-schema-selection/proposal.md +0 -26
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-agent-schema-selection/tasks.md +0 -32
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-per-change-schema-metadata/design.md +0 -147
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-per-change-schema-metadata/proposal.md +0 -29
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-per-change-schema-metadata/specs/cli-artifact-workflow/spec.md +0 -98
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-per-change-schema-metadata/tasks.md +0 -29
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-specs-apply-command/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-specs-apply-command/design.md +0 -77
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-specs-apply-command/proposal.md +0 -32
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-specs-apply-command/specs/specs-sync-skill/spec.md +0 -67
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-add-specs-apply-command/tasks.md +0 -40
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-make-apply-instructions-schema-aware/proposal.md +0 -138
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-make-apply-instructions-schema-aware/specs/cli-artifact-workflow/spec.md +0 -60
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-make-apply-instructions-schema-aware/tasks.md +0 -35
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-opsx-archive-command/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-opsx-archive-command/design.md +0 -84
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-opsx-archive-command/proposal.md +0 -28
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-opsx-archive-command/specs/opsx-archive-skill/spec.md +0 -122
- package/OpenSpec-main/openspec/changes/archive/2026-01-06-opsx-archive-command/tasks.md +0 -23
- package/OpenSpec-main/openspec/changes/archive/2026-01-07-add-nix-flake-support/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-01-07-add-nix-flake-support/design.md +0 -94
- package/OpenSpec-main/openspec/changes/archive/2026-01-07-add-nix-flake-support/proposal.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2026-01-07-add-nix-flake-support/specs/nix-flake-support/spec.md +0 -79
- package/OpenSpec-main/openspec/changes/archive/2026-01-07-add-nix-flake-support/tasks.md +0 -65
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-flake-update-script/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-flake-update-script/design.md +0 -117
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-flake-update-script/proposal.md +0 -23
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-flake-update-script/specs/flake-update-script/spec.md +0 -93
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-flake-update-script/tasks.md +0 -55
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-posthog-analytics/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-posthog-analytics/design.md +0 -175
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-posthog-analytics/proposal.md +0 -37
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-posthog-analytics/specs/global-config/spec.md +0 -21
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-posthog-analytics/specs/telemetry/spec.md +0 -116
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-add-posthog-analytics/tasks.md +0 -47
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-fix-codebuddy-frontmatter-fields/proposal.md +0 -16
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-fix-codebuddy-frontmatter-fields/specs/cli-init/spec.md +0 -75
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-fix-codebuddy-frontmatter-fields/specs/cli-update/spec.md +0 -56
- package/OpenSpec-main/openspec/changes/archive/2026-01-09-fix-codebuddy-frontmatter-fields/tasks.md +0 -6
- package/OpenSpec-main/openspec/changes/archive/2026-01-15-add-nix-ci-validation/design.md +0 -206
- package/OpenSpec-main/openspec/changes/archive/2026-01-15-add-nix-ci-validation/proposal.md +0 -21
- package/OpenSpec-main/openspec/changes/archive/2026-01-15-add-nix-ci-validation/specs/ci-nix-validation/spec.md +0 -104
- package/OpenSpec-main/openspec/changes/archive/2026-01-15-add-nix-ci-validation/tasks.md +0 -49
- package/OpenSpec-main/openspec/changes/archive/2026-01-30-opencode-command-references/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-01-30-opencode-command-references/README.md +0 -3
- package/OpenSpec-main/openspec/changes/archive/2026-01-30-opencode-command-references/design.md +0 -70
- package/OpenSpec-main/openspec/changes/archive/2026-01-30-opencode-command-references/proposal.md +0 -32
- package/OpenSpec-main/openspec/changes/archive/2026-01-30-opencode-command-references/specs/no-changes.md +0 -9
- package/OpenSpec-main/openspec/changes/archive/2026-01-30-opencode-command-references/tasks.md +0 -22
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-feedback-command/proposal.md +0 -20
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-feedback-command/specs/cli-feedback/spec.md +0 -188
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-feedback-command/tasks.md +0 -30
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-opsx-onboard-skill/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-opsx-onboard-skill/design.md +0 -115
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-opsx-onboard-skill/proposal.md +0 -27
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-opsx-onboard-skill/specs/opsx-onboard-skill/spec.md +0 -162
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-opsx-onboard-skill/tasks.md +0 -21
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-verify-skill/design.md +0 -96
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-verify-skill/proposal.md +0 -48
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-verify-skill/specs/opsx-verify-skill/spec.md +0 -190
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-add-verify-skill/tasks.md +0 -15
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-merge-init-experimental/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-merge-init-experimental/design.md +0 -193
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-merge-init-experimental/proposal.md +0 -32
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-merge-init-experimental/specs/cli-init/spec.md +0 -176
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-merge-init-experimental/specs/legacy-cleanup/spec.md +0 -158
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-merge-init-experimental/tasks.md +0 -67
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-multi-provider-skill-generation/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-multi-provider-skill-generation/design.md +0 -144
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-multi-provider-skill-generation/proposal.md +0 -36
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-multi-provider-skill-generation/specs/ai-tool-paths/spec.md +0 -63
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-multi-provider-skill-generation/specs/cli-artifact-workflow/spec.md +0 -60
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-multi-provider-skill-generation/specs/command-generation/spec.md +0 -98
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-multi-provider-skill-generation/tasks.md +0 -55
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-config/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-config/design.md +0 -665
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-config/proposal.md +0 -774
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-config/specs/config-loading/spec.md +0 -119
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-config/specs/context-injection/spec.md +0 -51
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-config/specs/rules-injection/spec.md +0 -99
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-config/specs/schema-resolution/spec.md +0 -83
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-config/tasks.md +0 -72
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-local-schemas/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-local-schemas/design.md +0 -117
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-local-schemas/proposal.md +0 -167
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-local-schemas/specs/schema-resolution/spec.md +0 -88
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-project-local-schemas/tasks.md +0 -28
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-schema-management-cli/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-schema-management-cli/design.md +0 -113
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-schema-management-cli/proposal.md +0 -55
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-schema-management-cli/specs/schema-fork-command/spec.md +0 -66
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-schema-management-cli/specs/schema-init-command/spec.md +0 -71
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-schema-management-cli/specs/schema-validate-command/spec.md +0 -86
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-schema-management-cli/specs/schema-which-command/spec.md +0 -65
- package/OpenSpec-main/openspec/changes/archive/2026-02-17-schema-management-cli/tasks.md +0 -67
- package/OpenSpec-main/openspec/changes/archive/2026-04-23-add-kimi-cli-skills-only-support/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/archive/2026-04-23-add-kimi-cli-skills-only-support/README.md +0 -3
- package/OpenSpec-main/openspec/changes/archive/2026-04-23-add-kimi-cli-skills-only-support/design.md +0 -85
- package/OpenSpec-main/openspec/changes/archive/2026-04-23-add-kimi-cli-skills-only-support/proposal.md +0 -38
- package/OpenSpec-main/openspec/changes/archive/2026-04-23-add-kimi-cli-skills-only-support/specs/ai-tool-paths/spec.md +0 -12
- package/OpenSpec-main/openspec/changes/archive/2026-04-23-add-kimi-cli-skills-only-support/specs/cli-init/spec.md +0 -37
- package/OpenSpec-main/openspec/changes/archive/2026-04-23-add-kimi-cli-skills-only-support/tasks.md +0 -22
- package/OpenSpec-main/openspec/changes/archive/2026-05-04-workspace-foundation/design.md +0 -208
- package/OpenSpec-main/openspec/changes/archive/2026-05-04-workspace-foundation/proposal.md +0 -142
- package/OpenSpec-main/openspec/changes/archive/2026-05-04-workspace-foundation/specs/openspec-conventions/spec.md +0 -29
- package/OpenSpec-main/openspec/changes/archive/2026-05-04-workspace-foundation/specs/workspace-foundation/spec.md +0 -199
- package/OpenSpec-main/openspec/changes/archive/2026-05-04-workspace-foundation/tasks.md +0 -56
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-create-and-register-repos/design.md +0 -356
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-create-and-register-repos/proposal.md +0 -128
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-create-and-register-repos/specs/cli-artifact-workflow/spec.md +0 -24
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-create-and-register-repos/specs/workspace-foundation/spec.md +0 -35
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-create-and-register-repos/specs/workspace-links/spec.md +0 -356
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-create-and-register-repos/tasks.md +0 -121
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-open-agent-context/design.md +0 -266
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-open-agent-context/proposal.md +0 -65
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-open-agent-context/specs/workspace-foundation/spec.md +0 -76
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-open-agent-context/specs/workspace-open/spec.md +0 -199
- package/OpenSpec-main/openspec/changes/archive/2026-05-06-workspace-open-agent-context/tasks.md +0 -89
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/design.md +0 -242
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/proposal.md +0 -78
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/artifact-graph/spec.md +0 -36
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/change-creation/spec.md +0 -42
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/cli-artifact-workflow/spec.md +0 -100
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/cli-config/spec.md +0 -55
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/cli-update/spec.md +0 -21
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/openspec-conventions/spec.md +0 -32
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/schema-resolution/spec.md +0 -25
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/workspace-change-planning/spec.md +0 -67
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/specs/workspace-links/spec.md +0 -163
- package/OpenSpec-main/openspec/changes/archive/2026-05-14-workspace-change-planning/tasks.md +0 -133
- package/OpenSpec-main/openspec/changes/fix-opencode-commands-directory/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/fix-opencode-commands-directory/design.md +0 -48
- package/OpenSpec-main/openspec/changes/fix-opencode-commands-directory/proposal.md +0 -26
- package/OpenSpec-main/openspec/changes/fix-opencode-commands-directory/specs/command-generation/spec.md +0 -63
- package/OpenSpec-main/openspec/changes/fix-opencode-commands-directory/tasks.md +0 -19
- package/OpenSpec-main/openspec/changes/graceful-status-no-changes/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/graceful-status-no-changes/design.md +0 -38
- package/OpenSpec-main/openspec/changes/graceful-status-no-changes/proposal.md +0 -25
- package/OpenSpec-main/openspec/changes/graceful-status-no-changes/specs/graceful-status-empty/spec.md +0 -27
- package/OpenSpec-main/openspec/changes/graceful-status-no-changes/tasks.md +0 -16
- package/OpenSpec-main/openspec/changes/schema-alias-support/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/schema-alias-support/proposal.md +0 -28
- package/OpenSpec-main/openspec/changes/simplify-skill-installation/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/simplify-skill-installation/design.md +0 -288
- package/OpenSpec-main/openspec/changes/simplify-skill-installation/proposal.md +0 -202
- package/OpenSpec-main/openspec/changes/simplify-skill-installation/specs/cli-init/spec.md +0 -199
- package/OpenSpec-main/openspec/changes/simplify-skill-installation/specs/cli-update/spec.md +0 -177
- package/OpenSpec-main/openspec/changes/simplify-skill-installation/specs/profiles/spec.md +0 -142
- package/OpenSpec-main/openspec/changes/simplify-skill-installation/specs/propose-workflow/spec.md +0 -42
- package/OpenSpec-main/openspec/changes/simplify-skill-installation/tasks.md +0 -132
- package/OpenSpec-main/openspec/changes/unify-template-generation-pipeline/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/unify-template-generation-pipeline/design.md +0 -149
- package/OpenSpec-main/openspec/changes/unify-template-generation-pipeline/proposal.md +0 -47
- package/OpenSpec-main/openspec/changes/unify-template-generation-pipeline/specs/template-artifact-pipeline/spec.md +0 -89
- package/OpenSpec-main/openspec/changes/unify-template-generation-pipeline/tasks.md +0 -41
- package/OpenSpec-main/openspec/changes/workspace-agent-guidance/.openspec.yaml +0 -2
- package/OpenSpec-main/openspec/changes/workspace-agent-guidance/proposal.md +0 -100
- package/OpenSpec-main/openspec/changes/workspace-apply-repo-slice/proposal.md +0 -58
- package/OpenSpec-main/openspec/changes/workspace-reimplementation-roadmap/HISTORICAL_DIRECTION.md +0 -511
- package/OpenSpec-main/openspec/changes/workspace-reimplementation-roadmap/POC_REFERENCE_GUIDE.md +0 -266
- package/OpenSpec-main/openspec/changes/workspace-reimplementation-roadmap/README.md +0 -107
- package/OpenSpec-main/openspec/changes/workspace-reimplementation-roadmap/START_HERE.md +0 -105
- package/OpenSpec-main/openspec/changes/workspace-reimplementation-roadmap/proposal.md +0 -62
- package/OpenSpec-main/openspec/changes/workspace-verify-and-archive/proposal.md +0 -57
- package/OpenSpec-main/openspec/config.yaml +0 -36
- package/OpenSpec-main/openspec/explorations/explore-workflow-ux.md +0 -116
- package/OpenSpec-main/openspec/explorations/workspace-architecture.md +0 -857
- package/OpenSpec-main/openspec/explorations/workspace-roadmap.md +0 -367
- package/OpenSpec-main/openspec/explorations/workspace-user-journeys.md +0 -2259
- package/OpenSpec-main/openspec/explorations/workspace-ux-simplification.md +0 -491
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/.initiative.yaml +0 -27
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/README.md +0 -33
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/decisions.md +0 -204
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/direction.md +0 -447
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/questions.md +0 -23
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/roadmap.md +0 -759
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/tasks.md +0 -308
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/01-lock-the-direction/evidence.md +0 -154
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/01-lock-the-direction/plan.md +0 -90
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/01-lock-the-direction/tasks.md +0 -44
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/02-stabilize-workspace-as-local-view/evidence.md +0 -68
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/02-stabilize-workspace-as-local-view/plan.md +0 -80
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/02-stabilize-workspace-as-local-view/tasks.md +0 -23
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/03-add-context-store-foundation/evidence.md +0 -43
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/03-add-context-store-foundation/plan.md +0 -85
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/03-add-context-store-foundation/tasks.md +0 -17
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/04-add-collection-foundation/evidence.md +0 -77
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/04-add-collection-foundation/plan.md +0 -198
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/04-add-collection-foundation/tasks.md +0 -14
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/05-ship-initiative-mvp/evidence.md +0 -99
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/05-ship-initiative-mvp/plan.md +0 -236
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/05-ship-initiative-mvp/tasks.md +0 -21
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/06-add-minimal-context-store-ux/evidence.md +0 -97
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/06-add-minimal-context-store-ux/plan.md +0 -333
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/06-add-minimal-context-store-ux/tasks.md +0 -29
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/07-add-agent-first-initiative-discovery/evidence.md +0 -97
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/07-add-agent-first-initiative-discovery/plan.md +0 -184
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/07-add-agent-first-initiative-discovery/tasks.md +0 -27
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/08-connect-repo-local-changes-to-initiatives/evidence.md +0 -239
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/08-connect-repo-local-changes-to-initiatives/plan.md +0 -279
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/08-connect-repo-local-changes-to-initiatives/tasks.md +0 -22
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/09-add-initiative-resolve/decision-review.md +0 -64
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/09-add-initiative-resolve/evidence.md +0 -106
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/09-add-initiative-resolve/plan.md +0 -141
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/09-add-initiative-resolve/tasks.md +0 -22
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/10-let-workspaces-open-initiatives/plan.md +0 -430
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/10-let-workspaces-open-initiatives/tasks.md +0 -43
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/11-manual-beta-reality-pass/notes.md +0 -289
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/11-manual-beta-reality-pass/plan.md +0 -39
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/11-manual-beta-reality-pass/tasks.md +0 -8
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/12-context-store-first-run-and-cleanup-ux/evidence.md +0 -45
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/12-context-store-first-run-and-cleanup-ux/plan.md +0 -150
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/12-context-store-first-run-and-cleanup-ux/tasks.md +0 -23
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/13-agent-handoff-output-and-delivery-polish/evidence.md +0 -25
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/13-agent-handoff-output-and-delivery-polish/plan.md +0 -98
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/13-agent-handoff-output-and-delivery-polish/tasks.md +0 -25
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/14-workspaces-beta-guide-split/plan.md +0 -37
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/14-workspaces-beta-guide-split/tasks.md +0 -9
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/15-context-store-project-roots-and-schema-led-initiatives/evidence.md +0 -140
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/15-context-store-project-roots-and-schema-led-initiatives/plan.md +0 -344
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/15-context-store-project-roots-and-schema-led-initiatives/tasks.md +0 -39
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/16-add-escalation-ux/plan.md +0 -26
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/16-add-escalation-ux/tasks.md +0 -7
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/17-harden-team-shared-coordination/plan.md +0 -25
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/17-harden-team-shared-coordination/tasks.md +0 -7
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/18-explore-initiative-hosted-target-bound-change-artifacts/evidence.md +0 -397
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/18-explore-initiative-hosted-target-bound-change-artifacts/plan.md +0 -180
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/18-explore-initiative-hosted-target-bound-change-artifacts/tasks.md +0 -28
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/19-review-workspace-beta-compatibility-before-public-release/plan.md +0 -62
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/19-review-workspace-beta-compatibility-before-public-release/tasks.md +0 -16
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/proposed-initiative-next-agent-handoff-ux/evidence.md +0 -47
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/proposed-initiative-next-agent-handoff-ux/plan.md +0 -90
- package/OpenSpec-main/openspec/initiatives/context-store-and-initiatives/work-items/proposed-initiative-next-agent-handoff-ux/tasks.md +0 -18
- package/OpenSpec-main/openspec/specs/ai-tool-paths/spec.md +0 -63
- package/OpenSpec-main/openspec/specs/artifact-graph/spec.md +0 -165
- package/OpenSpec-main/openspec/specs/change-creation/spec.md +0 -108
- package/OpenSpec-main/openspec/specs/ci-nix-validation/spec.md +0 -107
- package/OpenSpec-main/openspec/specs/cli-archive/spec.md +0 -210
- package/OpenSpec-main/openspec/specs/cli-artifact-workflow/spec.md +0 -398
- package/OpenSpec-main/openspec/specs/cli-change/spec.md +0 -92
- package/OpenSpec-main/openspec/specs/cli-completion/spec.md +0 -432
- package/OpenSpec-main/openspec/specs/cli-config/spec.md +0 -318
- package/OpenSpec-main/openspec/specs/cli-feedback/spec.md +0 -193
- package/OpenSpec-main/openspec/specs/cli-init/spec.md +0 -269
- package/OpenSpec-main/openspec/specs/cli-list/spec.md +0 -103
- package/OpenSpec-main/openspec/specs/cli-show/spec.md +0 -86
- package/OpenSpec-main/openspec/specs/cli-spec/spec.md +0 -88
- package/OpenSpec-main/openspec/specs/cli-update/spec.md +0 -229
- package/OpenSpec-main/openspec/specs/cli-validate/spec.md +0 -219
- package/OpenSpec-main/openspec/specs/cli-view/spec.md +0 -129
- package/OpenSpec-main/openspec/specs/command-generation/spec.md +0 -97
- package/OpenSpec-main/openspec/specs/config-loading/spec.md +0 -122
- package/OpenSpec-main/openspec/specs/context-injection/spec.md +0 -53
- package/OpenSpec-main/openspec/specs/docs-agent-instructions/spec.md +0 -62
- package/OpenSpec-main/openspec/specs/global-config/spec.md +0 -101
- package/OpenSpec-main/openspec/specs/instruction-loader/spec.md +0 -70
- package/OpenSpec-main/openspec/specs/legacy-cleanup/spec.md +0 -163
- package/OpenSpec-main/openspec/specs/openspec-conventions/spec.md +0 -556
- package/OpenSpec-main/openspec/specs/opsx-archive-skill/spec.md +0 -128
- package/OpenSpec-main/openspec/specs/opsx-onboard-skill/spec.md +0 -167
- package/OpenSpec-main/openspec/specs/opsx-verify-skill/spec.md +0 -189
- package/OpenSpec-main/openspec/specs/rules-injection/spec.md +0 -102
- package/OpenSpec-main/openspec/specs/schema-fork-command/spec.md +0 -71
- package/OpenSpec-main/openspec/specs/schema-init-command/spec.md +0 -76
- package/OpenSpec-main/openspec/specs/schema-resolution/spec.md +0 -201
- package/OpenSpec-main/openspec/specs/schema-validate-command/spec.md +0 -91
- package/OpenSpec-main/openspec/specs/schema-which-command/spec.md +0 -70
- package/OpenSpec-main/openspec/specs/specs-sync-skill/spec.md +0 -72
- package/OpenSpec-main/openspec/specs/telemetry/spec.md +0 -122
- package/OpenSpec-main/openspec/specs/workspace-change-planning/spec.md +0 -71
- package/OpenSpec-main/openspec/specs/workspace-foundation/spec.md +0 -279
- package/OpenSpec-main/openspec/specs/workspace-links/spec.md +0 -529
- package/OpenSpec-main/openspec/specs/workspace-open/spec.md +0 -205
- package/OpenSpec-main/openspec-parallel-merge-plan.md +0 -98
- package/OpenSpec-main/package-lock.json +0 -4978
- package/OpenSpec-main/package.json +0 -84
- package/OpenSpec-main/pnpm-lock.yaml +0 -3187
- package/OpenSpec-main/schemas/spec-driven/schema.yaml +0 -153
- package/OpenSpec-main/schemas/spec-driven/templates/design.md +0 -19
- package/OpenSpec-main/schemas/spec-driven/templates/proposal.md +0 -23
- package/OpenSpec-main/schemas/spec-driven/templates/spec.md +0 -8
- package/OpenSpec-main/schemas/spec-driven/templates/tasks.md +0 -9
- package/OpenSpec-main/schemas/workspace-planning/schema.yaml +0 -72
- package/OpenSpec-main/schemas/workspace-planning/templates/design.md +0 -33
- package/OpenSpec-main/schemas/workspace-planning/templates/proposal.md +0 -28
- package/OpenSpec-main/schemas/workspace-planning/templates/spec.md +0 -9
- package/OpenSpec-main/schemas/workspace-planning/templates/tasks.md +0 -15
- package/OpenSpec-main/scripts/README.md +0 -37
- package/OpenSpec-main/scripts/pack-version-check.mjs +0 -111
- package/OpenSpec-main/scripts/postinstall.js +0 -83
- package/OpenSpec-main/scripts/test-postinstall.sh +0 -57
- package/OpenSpec-main/scripts/update-flake.sh +0 -128
- package/OpenSpec-main/test/cli-e2e/basic.test.ts +0 -205
- package/OpenSpec-main/test/commands/artifact-workflow.test.ts +0 -1063
- package/OpenSpec-main/test/commands/change-initiative-link.test.ts +0 -532
- package/OpenSpec-main/test/commands/change.interactive-show.test.ts +0 -45
- package/OpenSpec-main/test/commands/change.interactive-validate.test.ts +0 -48
- package/OpenSpec-main/test/commands/completion.test.ts +0 -278
- package/OpenSpec-main/test/commands/config-profile.test.ts +0 -532
- package/OpenSpec-main/test/commands/config.test.ts +0 -285
- package/OpenSpec-main/test/commands/context-store.test.ts +0 -692
- package/OpenSpec-main/test/commands/feedback.test.ts +0 -429
- package/OpenSpec-main/test/commands/initiative.test.ts +0 -907
- package/OpenSpec-main/test/commands/schema.test.ts +0 -467
- package/OpenSpec-main/test/commands/show.test.ts +0 -123
- package/OpenSpec-main/test/commands/spec.interactive-show.test.ts +0 -44
- package/OpenSpec-main/test/commands/spec.interactive-validate.test.ts +0 -44
- package/OpenSpec-main/test/commands/spec.test.ts +0 -324
- package/OpenSpec-main/test/commands/validate.enriched-output.test.ts +0 -49
- package/OpenSpec-main/test/commands/validate.test.ts +0 -147
- package/OpenSpec-main/test/commands/workspace-initiative-open.test.ts +0 -638
- package/OpenSpec-main/test/commands/workspace-open.test.ts +0 -123
- package/OpenSpec-main/test/commands/workspace.interactive.test.ts +0 -696
- package/OpenSpec-main/test/commands/workspace.test.ts +0 -1812
- package/OpenSpec-main/test/core/archive.test.ts +0 -869
- package/OpenSpec-main/test/core/artifact-graph/graph.test.ts +0 -268
- package/OpenSpec-main/test/core/artifact-graph/instruction-loader.test.ts +0 -609
- package/OpenSpec-main/test/core/artifact-graph/outputs.test.ts +0 -175
- package/OpenSpec-main/test/core/artifact-graph/resolver.test.ts +0 -651
- package/OpenSpec-main/test/core/artifact-graph/schema.test.ts +0 -207
- package/OpenSpec-main/test/core/artifact-graph/state.test.ts +0 -174
- package/OpenSpec-main/test/core/artifact-graph/workflow.integration.test.ts +0 -182
- package/OpenSpec-main/test/core/available-tools.test.ts +0 -167
- package/OpenSpec-main/test/core/collections/initiatives/operations.test.ts +0 -342
- package/OpenSpec-main/test/core/collections/initiatives/resolution.test.ts +0 -21
- package/OpenSpec-main/test/core/collections/initiatives/schema.test.ts +0 -201
- package/OpenSpec-main/test/core/collections/initiatives/templates.test.ts +0 -74
- package/OpenSpec-main/test/core/collections/runtime.test.ts +0 -214
- package/OpenSpec-main/test/core/command-generation/adapters.test.ts +0 -710
- package/OpenSpec-main/test/core/command-generation/generator.test.ts +0 -110
- package/OpenSpec-main/test/core/command-generation/registry.test.ts +0 -108
- package/OpenSpec-main/test/core/command-generation/types.test.ts +0 -79
- package/OpenSpec-main/test/core/commands/change-command.list.test.ts +0 -76
- package/OpenSpec-main/test/core/commands/change-command.show-validate.test.ts +0 -111
- package/OpenSpec-main/test/core/completions/command-registry.test.ts +0 -201
- package/OpenSpec-main/test/core/completions/completion-provider.test.ts +0 -288
- package/OpenSpec-main/test/core/completions/generators/bash-generator.test.ts +0 -586
- package/OpenSpec-main/test/core/completions/generators/fish-generator.test.ts +0 -549
- package/OpenSpec-main/test/core/completions/generators/powershell-generator.test.ts +0 -621
- package/OpenSpec-main/test/core/completions/generators/zsh-generator.test.ts +0 -425
- package/OpenSpec-main/test/core/completions/installers/bash-installer.test.ts +0 -484
- package/OpenSpec-main/test/core/completions/installers/fish-installer.test.ts +0 -321
- package/OpenSpec-main/test/core/completions/installers/powershell-installer.test.ts +0 -824
- package/OpenSpec-main/test/core/completions/installers/zsh-installer.test.ts +0 -750
- package/OpenSpec-main/test/core/config-schema.test.ts +0 -340
- package/OpenSpec-main/test/core/context-store/foundation.test.ts +0 -364
- package/OpenSpec-main/test/core/context-store/registry.test.ts +0 -599
- package/OpenSpec-main/test/core/converters/json-converter.test.ts +0 -184
- package/OpenSpec-main/test/core/global-config.test.ts +0 -371
- package/OpenSpec-main/test/core/init.test.ts +0 -786
- package/OpenSpec-main/test/core/legacy-cleanup.test.ts +0 -1162
- package/OpenSpec-main/test/core/list.test.ts +0 -165
- package/OpenSpec-main/test/core/migration.test.ts +0 -150
- package/OpenSpec-main/test/core/parsers/change-parser.test.ts +0 -52
- package/OpenSpec-main/test/core/parsers/markdown-parser.test.ts +0 -355
- package/OpenSpec-main/test/core/parsers/requirement-blocks.test.ts +0 -46
- package/OpenSpec-main/test/core/planning-home.test.ts +0 -120
- package/OpenSpec-main/test/core/profile-sync-drift.test.ts +0 -92
- package/OpenSpec-main/test/core/profiles.test.ts +0 -63
- package/OpenSpec-main/test/core/project-config.test.ts +0 -610
- package/OpenSpec-main/test/core/shared/skill-generation.test.ts +0 -301
- package/OpenSpec-main/test/core/shared/tool-detection.test.ts +0 -333
- package/OpenSpec-main/test/core/templates/skill-templates-parity.test.ts +0 -172
- package/OpenSpec-main/test/core/update.test.ts +0 -1810
- package/OpenSpec-main/test/core/validation.enriched-messages.test.ts +0 -74
- package/OpenSpec-main/test/core/validation.test.ts +0 -680
- package/OpenSpec-main/test/core/view.test.ts +0 -129
- package/OpenSpec-main/test/core/workspace/foundation.test.ts +0 -694
- package/OpenSpec-main/test/core/workspace/legacy-state.test.ts +0 -221
- package/OpenSpec-main/test/core/workspace/skills.test.ts +0 -69
- package/OpenSpec-main/test/fixtures/tmp-init/openspec/changes/c1/proposal.md +0 -7
- package/OpenSpec-main/test/fixtures/tmp-init/openspec/changes/c1/specs/alpha/spec.md +0 -8
- package/OpenSpec-main/test/fixtures/tmp-init/openspec/specs/alpha/spec.md +0 -12
- package/OpenSpec-main/test/helpers/path-env.ts +0 -26
- package/OpenSpec-main/test/helpers/run-cli.ts +0 -150
- package/OpenSpec-main/test/prompts/searchable-multi-select.test.ts +0 -220
- package/OpenSpec-main/test/specs/source-specs-normalization.test.ts +0 -63
- package/OpenSpec-main/test/telemetry/config.test.ts +0 -298
- package/OpenSpec-main/test/telemetry/index.test.ts +0 -219
- package/OpenSpec-main/test/utils/change-metadata.test.ts +0 -368
- package/OpenSpec-main/test/utils/change-utils.test.ts +0 -201
- package/OpenSpec-main/test/utils/command-references.test.ts +0 -83
- package/OpenSpec-main/test/utils/file-system.test.ts +0 -322
- package/OpenSpec-main/test/utils/interactive.test.ts +0 -125
- package/OpenSpec-main/test/utils/marker-updates.test.ts +0 -448
- package/OpenSpec-main/test/utils/shell-detection.test.ts +0 -185
- package/OpenSpec-main/vitest.config.ts +0 -47
- package/OpenSpec-main/vitest.setup.ts +0 -15
- package/Scanner CLI Inteligente para Projetos.md +0 -433
|
@@ -1,525 +0,0 @@
|
|
|
1
|
-
# Shell Completions Design
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This design establishes a plugin-based architecture for shell completions that prioritizes clean TypeScript patterns, scalability, and maintainability. The system separates concerns between shell-specific generation logic, dynamic completion data providers, and installation automation.
|
|
6
|
-
|
|
7
|
-
**Scope:** This proposal implements **Zsh completion only** (with Oh My Zsh priority). The architecture is designed to support bash, fish, and PowerShell in future proposals.
|
|
8
|
-
|
|
9
|
-
## Native Shell Completion Behaviors
|
|
10
|
-
|
|
11
|
-
**Design Philosophy:** We integrate with each shell's native completion system rather than attempting to customize or unify behaviors. This ensures familiar UX for users and reduces maintenance complexity.
|
|
12
|
-
|
|
13
|
-
**Note:** While all four shell behaviors are documented below for architectural reference, **only Zsh is implemented in this proposal**. Bash, Fish, and PowerShell are documented to guide future implementations.
|
|
14
|
-
|
|
15
|
-
### Bash Completion Behavior
|
|
16
|
-
|
|
17
|
-
**Interaction Pattern:**
|
|
18
|
-
- **Single TAB:** Completes if only one match exists, otherwise does nothing
|
|
19
|
-
- **Double TAB (TAB TAB):** Displays all possible completions as a list
|
|
20
|
-
- **Type more characters + TAB:** Narrows matches and completes or shows refined list
|
|
21
|
-
|
|
22
|
-
**OpenSpec Integration:**
|
|
23
|
-
```bash
|
|
24
|
-
# After installing: openspec completion install bash
|
|
25
|
-
openspec val<TAB> # Completes to "openspec validate"
|
|
26
|
-
openspec validate <TAB><TAB> # Shows: --all --changes --specs --strict --json [change-ids] [spec-ids]
|
|
27
|
-
openspec show add-<TAB><TAB> # Shows all changes starting with "add-"
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
**Implementation:** Uses bash-completion framework with `_init_completion`, `compgen`, and `COMPREPLY` array.
|
|
31
|
-
|
|
32
|
-
### Zsh Completion Behavior (with Oh My Zsh)
|
|
33
|
-
|
|
34
|
-
**Interaction Pattern:**
|
|
35
|
-
- **Single TAB:** Shows interactive menu with all matches immediately
|
|
36
|
-
- **TAB / Arrow Keys:** Navigate through completion options
|
|
37
|
-
- **Enter:** Selects highlighted option
|
|
38
|
-
- **Ctrl+C / Esc:** Cancels completion menu
|
|
39
|
-
|
|
40
|
-
**OpenSpec Integration:**
|
|
41
|
-
```zsh
|
|
42
|
-
# After installing: openspec completion install zsh
|
|
43
|
-
openspec val<TAB> # Shows menu with "validate" and "view" highlighted
|
|
44
|
-
openspec show <TAB> # Shows menu with all change IDs and spec IDs, categorized
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Implementation:** Uses Zsh completion system with `_arguments`, `_describe`, and `compadd` built-ins. Oh My Zsh provides enhanced menu styling automatically.
|
|
48
|
-
|
|
49
|
-
### Fish Completion Behavior
|
|
50
|
-
|
|
51
|
-
**Interaction Pattern:**
|
|
52
|
-
- **As-you-type:** Gray suggestions appear automatically in real-time
|
|
53
|
-
- **Right Arrow / Ctrl+F:** Accepts the suggestion
|
|
54
|
-
- **TAB:** Shows menu with all matches if multiple exist
|
|
55
|
-
- **TAB again:** Cycles through options or navigates menu
|
|
56
|
-
- **Enter:** Accepts current selection
|
|
57
|
-
|
|
58
|
-
**OpenSpec Integration:**
|
|
59
|
-
```fish
|
|
60
|
-
# After installing: openspec completion install fish
|
|
61
|
-
openspec val # Gray suggestion shows "validate" immediately
|
|
62
|
-
openspec show a # Real-time suggestions for changes starting with "a"
|
|
63
|
-
openspec <TAB> # Shows all commands with descriptions in paged menu
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Implementation:** Uses Fish's declarative `complete -c` syntax. Completions are auto-loaded from `~/.config/fish/completions/`.
|
|
67
|
-
|
|
68
|
-
### PowerShell Completion Behavior
|
|
69
|
-
|
|
70
|
-
**Interaction Pattern:**
|
|
71
|
-
- **TAB:** Cycles forward through completions one at a time (inline replacement)
|
|
72
|
-
- **Shift+TAB:** Cycles backward through completions
|
|
73
|
-
- **Ctrl+Space:** Shows IntelliSense-style menu (PSReadLine v2.2+)
|
|
74
|
-
- **Arrow Keys:** Navigate menu if shown
|
|
75
|
-
|
|
76
|
-
**OpenSpec Integration:**
|
|
77
|
-
```powershell
|
|
78
|
-
# After installing: openspec completion install powershell
|
|
79
|
-
openspec val<TAB> # Cycles: validate → view → validate
|
|
80
|
-
openspec show <TAB> # Cycles through change IDs one by one
|
|
81
|
-
openspec <Ctrl+Space> # Shows IntelliSense menu with all commands
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**Implementation:** Uses `Register-ArgumentCompleter` with custom script block that returns `[System.Management.Automation.CompletionResult]` objects.
|
|
85
|
-
|
|
86
|
-
### Comparison Table
|
|
87
|
-
|
|
88
|
-
| Shell | Trigger | Display Style | Navigation | Selection |
|
|
89
|
-
|-------------|-----------------|------------------------|----------------------|----------------|
|
|
90
|
-
| Bash | TAB TAB | List (printed once) | Type more + TAB | Auto-complete |
|
|
91
|
-
| Zsh | TAB | Interactive menu | TAB/Arrows | Enter |
|
|
92
|
-
| Fish | TAB/Auto | Real-time + menu | TAB/Arrows | Enter/Right |
|
|
93
|
-
| PowerShell | TAB | Inline cycling | TAB/Shift+TAB | Stop cycling |
|
|
94
|
-
|
|
95
|
-
**Key Insight:** Each shell's completion UX reflects its design philosophy. We respect these conventions rather than forcing uniformity.
|
|
96
|
-
|
|
97
|
-
## Architectural Principles
|
|
98
|
-
|
|
99
|
-
### 1. Plugin-Based Generator System
|
|
100
|
-
|
|
101
|
-
Each shell has unique completion syntax and conventions. Rather than creating a monolithic generator with branching logic, we use a plugin pattern where each shell implements a common interface:
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
interface CompletionGenerator {
|
|
105
|
-
generate(): string;
|
|
106
|
-
getInstallPath(): string;
|
|
107
|
-
getConfigFile(): string;
|
|
108
|
-
}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**Benefits:**
|
|
112
|
-
- New shells can be added without modifying existing generators
|
|
113
|
-
- Shell-specific logic is isolated and testable
|
|
114
|
-
- Type safety ensures all generators implement required methods
|
|
115
|
-
- Easy to maintain and understand (single responsibility per generator)
|
|
116
|
-
|
|
117
|
-
**Implementation Classes:**
|
|
118
|
-
- `ZshCompletionGenerator` - Uses Zsh's `_arguments` and `_describe` functions
|
|
119
|
-
- `BashCompletionGenerator` - Uses `_init_completion` and `compgen` built-ins
|
|
120
|
-
- `FishCompletionGenerator` - Uses `complete -c` declarative syntax
|
|
121
|
-
- `PowerShellCompletionGenerator` - Uses `Register-ArgumentCompleter` cmdlet
|
|
122
|
-
|
|
123
|
-
### 2. Centralized Command Registry
|
|
124
|
-
|
|
125
|
-
Shell completions must stay synchronized with actual CLI commands. To avoid duplication and drift, we maintain a single source of truth:
|
|
126
|
-
|
|
127
|
-
```typescript
|
|
128
|
-
type CommandDefinition = {
|
|
129
|
-
name: string;
|
|
130
|
-
description: string;
|
|
131
|
-
flags: FlagDefinition[];
|
|
132
|
-
acceptsChangeId: boolean;
|
|
133
|
-
acceptsSpecId: boolean;
|
|
134
|
-
subcommands?: CommandDefinition[];
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
const COMMAND_REGISTRY: CommandDefinition[] = [
|
|
138
|
-
{
|
|
139
|
-
name: 'init',
|
|
140
|
-
description: 'Initialize OpenSpec in your project',
|
|
141
|
-
flags: [
|
|
142
|
-
{ name: '--tools', description: 'Configure AI tools non-interactively', hasValue: true }
|
|
143
|
-
],
|
|
144
|
-
acceptsChangeId: false,
|
|
145
|
-
acceptsSpecId: false
|
|
146
|
-
},
|
|
147
|
-
// ... all other commands
|
|
148
|
-
];
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
**Benefits:**
|
|
152
|
-
- All generators consume the same command definitions
|
|
153
|
-
- Adding a new command automatically propagates to all shells
|
|
154
|
-
- Flag changes only need to be made in one place
|
|
155
|
-
- Type safety prevents typos and missing fields
|
|
156
|
-
- Easier to test (mock the registry)
|
|
157
|
-
|
|
158
|
-
**TypeScript Sugar:**
|
|
159
|
-
- Use `const` assertions for readonly registry
|
|
160
|
-
- Leverage discriminated unions for command types
|
|
161
|
-
- Use `satisfies` operator to ensure registry matches interface
|
|
162
|
-
|
|
163
|
-
### 3. Dynamic Completion Provider
|
|
164
|
-
|
|
165
|
-
Change and spec IDs are project-specific and discovered at runtime. A dedicated provider encapsulates this logic:
|
|
166
|
-
|
|
167
|
-
```typescript
|
|
168
|
-
class CompletionProvider {
|
|
169
|
-
private changeCache: { ids: string[]; timestamp: number } | null = null;
|
|
170
|
-
private specCache: { ids: string[]; timestamp: number } | null = null;
|
|
171
|
-
private readonly CACHE_TTL_MS = 2000;
|
|
172
|
-
|
|
173
|
-
async getChangeIds(): Promise<string[]> {
|
|
174
|
-
if (this.changeCache && Date.now() - this.changeCache.timestamp < this.CACHE_TTL_MS) {
|
|
175
|
-
return this.changeCache.ids;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
const ids = await discoverActiveChangeIds();
|
|
179
|
-
this.changeCache = { ids, timestamp: Date.now() };
|
|
180
|
-
return ids;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
async getSpecIds(): Promise<string[]> {
|
|
184
|
-
// Similar caching logic
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
isOpenSpecProject(): boolean {
|
|
188
|
-
// Check for openspec/ directory
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
**Benefits:**
|
|
194
|
-
- Caching reduces file system overhead during rapid tab completion
|
|
195
|
-
- Encapsulates project detection logic
|
|
196
|
-
- Easy to test with mocked file system
|
|
197
|
-
- Shared across all shell generators
|
|
198
|
-
|
|
199
|
-
**Design Decisions:**
|
|
200
|
-
- 2-second cache TTL balances freshness with performance
|
|
201
|
-
- Cache per-process (not persistent) to avoid stale data across sessions
|
|
202
|
-
- Graceful degradation when outside OpenSpec projects
|
|
203
|
-
|
|
204
|
-
### 4. Separate Installation Logic
|
|
205
|
-
|
|
206
|
-
Installation involves shell configuration file manipulation, which differs from generation. We separate this concern:
|
|
207
|
-
|
|
208
|
-
```typescript
|
|
209
|
-
interface CompletionInstaller {
|
|
210
|
-
install(): Promise<InstallResult>;
|
|
211
|
-
uninstall(): Promise<UninstallResult>;
|
|
212
|
-
isInstalled(): Promise<boolean>;
|
|
213
|
-
}
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
**Shell-Specific Installers:**
|
|
217
|
-
- `ZshInstaller` - Handles both Oh My Zsh (custom completions) and standard Zsh (fpath)
|
|
218
|
-
- `BashInstaller` - Detects completion directories and sources from `.bashrc`
|
|
219
|
-
- `FishInstaller` - Writes to `~/.config/fish/completions/` (auto-loaded)
|
|
220
|
-
- `PowerShellInstaller` - Appends to PowerShell profile
|
|
221
|
-
|
|
222
|
-
**Benefits:**
|
|
223
|
-
- Installation logic doesn't pollute generator code
|
|
224
|
-
- Can test installation without generating completion scripts
|
|
225
|
-
- Easier to handle edge cases (missing directories, permissions, already installed)
|
|
226
|
-
|
|
227
|
-
### 5. Type-Safe Shell Detection
|
|
228
|
-
|
|
229
|
-
We use TypeScript's literal types and type guards for shell detection:
|
|
230
|
-
|
|
231
|
-
```typescript
|
|
232
|
-
type SupportedShell = 'bash' | 'zsh' | 'fish' | 'powershell';
|
|
233
|
-
|
|
234
|
-
function detectShell(): SupportedShell {
|
|
235
|
-
const shellPath = process.env.SHELL || '';
|
|
236
|
-
const shellName = path.basename(shellPath).toLowerCase();
|
|
237
|
-
|
|
238
|
-
// PowerShell normalization
|
|
239
|
-
if (shellName === 'pwsh' || shellName === 'powershell') {
|
|
240
|
-
return 'powershell';
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
const supported: SupportedShell[] = ['bash', 'zsh', 'fish', 'powershell'];
|
|
244
|
-
if (supported.includes(shellName as SupportedShell)) {
|
|
245
|
-
return shellName as SupportedShell;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
throw new Error(`Shell '${shellName}' is not supported. Supported: ${supported.join(', ')}`);
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
**Benefits:**
|
|
253
|
-
- Compile-time type checking prevents invalid shell names
|
|
254
|
-
- Easy to add new shells (add to union type)
|
|
255
|
-
- Type narrowing works in switch statements
|
|
256
|
-
- Clear error messages for unsupported shells
|
|
257
|
-
|
|
258
|
-
### 6. Factory Pattern for Instantiation
|
|
259
|
-
|
|
260
|
-
A factory function selects the appropriate generator/installer based on shell type:
|
|
261
|
-
|
|
262
|
-
```typescript
|
|
263
|
-
function createGenerator(shell: SupportedShell, provider: CompletionProvider): CompletionGenerator {
|
|
264
|
-
switch (shell) {
|
|
265
|
-
case 'bash': return new BashCompletionGenerator(COMMAND_REGISTRY, provider);
|
|
266
|
-
case 'zsh': return new ZshCompletionGenerator(COMMAND_REGISTRY, provider);
|
|
267
|
-
case 'fish': return new FishCompletionGenerator(COMMAND_REGISTRY, provider);
|
|
268
|
-
case 'powershell': return new PowerShellCompletionGenerator(COMMAND_REGISTRY, provider);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
**Benefits:**
|
|
274
|
-
- Single point of instantiation
|
|
275
|
-
- Type safety ensures exhaustive switch (TypeScript error if shell type missing)
|
|
276
|
-
- Easy to inject dependencies (registry, provider)
|
|
277
|
-
|
|
278
|
-
## Command Structure
|
|
279
|
-
|
|
280
|
-
**This Proposal (Zsh-only):**
|
|
281
|
-
```
|
|
282
|
-
openspec completion
|
|
283
|
-
├── zsh # Generate Zsh completion script
|
|
284
|
-
├── install [shell] # Install Zsh completion (auto-detects or explicit zsh)
|
|
285
|
-
└── uninstall [shell] # Remove Zsh completion (auto-detects or explicit zsh)
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
**Future (after follow-up proposals):**
|
|
289
|
-
```
|
|
290
|
-
openspec completion
|
|
291
|
-
├── bash # Generate Bash completion script (future)
|
|
292
|
-
├── zsh # Generate Zsh completion script (this proposal)
|
|
293
|
-
├── fish # Generate Fish completion script (future)
|
|
294
|
-
├── powershell # Generate PowerShell completion script (future)
|
|
295
|
-
├── install [shell] # Install completion (auto-detects or explicit shell)
|
|
296
|
-
└── uninstall [shell] # Remove completion (auto-detects or explicit shell)
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
## File Organization
|
|
300
|
-
|
|
301
|
-
**This Proposal (Zsh-only):**
|
|
302
|
-
```
|
|
303
|
-
src/
|
|
304
|
-
├── commands/
|
|
305
|
-
│ └── completion.ts # CLI command registration (zsh, install, uninstall)
|
|
306
|
-
├── core/
|
|
307
|
-
│ └── completions/
|
|
308
|
-
│ ├── types.ts # Interfaces: CompletionGenerator, CommandDefinition, etc.
|
|
309
|
-
│ ├── command-registry.ts # Single source of truth for OpenSpec commands
|
|
310
|
-
│ ├── completion-provider.ts # Dynamic change/spec ID discovery with caching
|
|
311
|
-
│ ├── factory.ts # Factory for instantiating Zsh generator/installer
|
|
312
|
-
│ ├── generators/
|
|
313
|
-
│ │ └── zsh-generator.ts # Zsh completion script generator
|
|
314
|
-
│ └── installers/
|
|
315
|
-
│ └── zsh-installer.ts # Handles Oh My Zsh + standard Zsh installation
|
|
316
|
-
└── utils/
|
|
317
|
-
└── shell-detection.ts # Shell detection (returns 'zsh' or throws)
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
**Future additions (bash, fish, powershell):**
|
|
321
|
-
- `generators/bash-generator.ts`, `fish-generator.ts`, `powershell-generator.ts`
|
|
322
|
-
- `installers/bash-installer.ts`, `fish-installer.ts`, `powershell-installer.ts`
|
|
323
|
-
- Update `shell-detection.ts` to support additional shell types
|
|
324
|
-
|
|
325
|
-
## Oh My Zsh Priority
|
|
326
|
-
|
|
327
|
-
Zsh implementation prioritizes Oh My Zsh because:
|
|
328
|
-
1. **Popularity** - Oh My Zsh is the most popular Zsh configuration framework
|
|
329
|
-
2. **Convention** - Has standard completion directory (`~/.oh-my-zsh/custom/completions/`)
|
|
330
|
-
3. **Detection** - Easy to detect via `$ZSH` environment variable
|
|
331
|
-
4. **Fallback** - Standard Zsh support provides compatibility when Oh My Zsh isn't installed
|
|
332
|
-
|
|
333
|
-
**Installation Strategy:**
|
|
334
|
-
```typescript
|
|
335
|
-
if (isOhMyZshInstalled()) {
|
|
336
|
-
// Install to ~/.oh-my-zsh/custom/completions/_openspec
|
|
337
|
-
// Automatically loaded by Oh My Zsh
|
|
338
|
-
} else {
|
|
339
|
-
// Install to ~/.zsh/completions/_openspec
|
|
340
|
-
// Update ~/.zshrc with fpath and compinit if needed
|
|
341
|
-
}
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
## Caching Strategy
|
|
345
|
-
|
|
346
|
-
Dynamic completions cache results for 2 seconds to balance freshness with performance:
|
|
347
|
-
|
|
348
|
-
**Why 2 seconds?**
|
|
349
|
-
- Typical tab completion sessions last < 2 seconds
|
|
350
|
-
- Prevents repeated file system scans during rapid tabbing
|
|
351
|
-
- Short enough to feel "live" when changes/specs are added
|
|
352
|
-
- Automatic per-process expiration (no stale data across sessions)
|
|
353
|
-
|
|
354
|
-
**Implementation:**
|
|
355
|
-
```typescript
|
|
356
|
-
private changeCache: { ids: string[]; timestamp: number } | null = null;
|
|
357
|
-
private readonly CACHE_TTL_MS = 2000;
|
|
358
|
-
|
|
359
|
-
if (this.changeCache && Date.now() - this.changeCache.timestamp < this.CACHE_TTL_MS) {
|
|
360
|
-
return this.changeCache.ids; // Use cached
|
|
361
|
-
}
|
|
362
|
-
// Refresh cache
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
## Error Handling Philosophy
|
|
366
|
-
|
|
367
|
-
Completions should degrade gracefully rather than break workflows:
|
|
368
|
-
|
|
369
|
-
1. **Unsupported shell** - Clear error with list of supported shells
|
|
370
|
-
2. **Not in OpenSpec project** - Skip dynamic completions, only offer static commands
|
|
371
|
-
3. **Permission errors** - Suggest alternative installation methods
|
|
372
|
-
4. **Missing config directories** - Auto-create with user notification
|
|
373
|
-
5. **Already installed** - Offer to reinstall/update
|
|
374
|
-
6. **Not installed (during uninstall)** - Exit gracefully with informational message
|
|
375
|
-
|
|
376
|
-
## Testing Strategy
|
|
377
|
-
|
|
378
|
-
Each component is independently testable:
|
|
379
|
-
|
|
380
|
-
1. **Unit Tests**
|
|
381
|
-
- Shell detection with mocked `$SHELL` environment variable
|
|
382
|
-
- Generator output verification (regex pattern matching)
|
|
383
|
-
- Completion provider caching behavior
|
|
384
|
-
- Command registry structure validation
|
|
385
|
-
|
|
386
|
-
2. **Integration Tests**
|
|
387
|
-
- Installation to temporary test directories
|
|
388
|
-
- Configuration file modifications
|
|
389
|
-
- End-to-end command flow (generate → install → verify)
|
|
390
|
-
|
|
391
|
-
3. **Manual Testing**
|
|
392
|
-
- Real shell environments (Oh My Zsh, Bash, Fish, PowerShell)
|
|
393
|
-
- Tab completion behavior in OpenSpec projects
|
|
394
|
-
- Dynamic change/spec ID suggestions
|
|
395
|
-
- Installation/uninstallation workflows
|
|
396
|
-
|
|
397
|
-
## TypeScript Sugar Patterns
|
|
398
|
-
|
|
399
|
-
### 1. Const Assertions for Immutable Data
|
|
400
|
-
```typescript
|
|
401
|
-
const COMMAND_REGISTRY = [
|
|
402
|
-
{ name: 'init', ... },
|
|
403
|
-
{ name: 'list', ... }
|
|
404
|
-
] as const;
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
### 2. Discriminated Unions for Command Types
|
|
408
|
-
```typescript
|
|
409
|
-
type Command =
|
|
410
|
-
| { type: 'simple'; name: string }
|
|
411
|
-
| { type: 'with-subcommands'; name: string; subcommands: Command[] };
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
### 3. Template Literal Types for Strings
|
|
415
|
-
```typescript
|
|
416
|
-
type ShellConfigFile = `~/.${SupportedShell}rc` | `~/.${SupportedShell}_profile`;
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
### 4. Satisfies Operator for Type Validation
|
|
420
|
-
```typescript
|
|
421
|
-
const config = {
|
|
422
|
-
shell: 'zsh',
|
|
423
|
-
path: '~/.zshrc'
|
|
424
|
-
} satisfies ShellConfig;
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
### 5. Optional Chaining and Nullish Coalescing
|
|
428
|
-
```typescript
|
|
429
|
-
const path = process.env.ZSH ?? `${os.homedir()}/.oh-my-zsh`;
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
### 6. Async/Await with Promise.all for Parallel Operations
|
|
433
|
-
```typescript
|
|
434
|
-
const [changes, specs] = await Promise.all([
|
|
435
|
-
provider.getChangeIds(),
|
|
436
|
-
provider.getSpecIds()
|
|
437
|
-
]);
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
## Scalability Considerations
|
|
441
|
-
|
|
442
|
-
### Adding a New Shell
|
|
443
|
-
|
|
444
|
-
1. Define shell in `SupportedShell` union type
|
|
445
|
-
2. Create generator class implementing `CompletionGenerator`
|
|
446
|
-
3. Create installer class implementing `CompletionInstaller`
|
|
447
|
-
4. Add cases to factory functions
|
|
448
|
-
5. Add command registration in CLI
|
|
449
|
-
6. Write tests
|
|
450
|
-
|
|
451
|
-
**TypeScript will enforce** that all switch statements are updated (exhaustiveness checking).
|
|
452
|
-
|
|
453
|
-
### Adding a New Command
|
|
454
|
-
|
|
455
|
-
1. Add to `COMMAND_REGISTRY` with appropriate metadata
|
|
456
|
-
2. All generators automatically include it
|
|
457
|
-
3. Update tests to verify new command appears
|
|
458
|
-
|
|
459
|
-
### Changing Completion Behavior
|
|
460
|
-
|
|
461
|
-
Dynamic completion logic is centralized in `CompletionProvider`, making behavior changes trivial without touching shell-specific code.
|
|
462
|
-
|
|
463
|
-
## Trade-offs and Decisions
|
|
464
|
-
|
|
465
|
-
### Decision: Separate Generators vs. Template Engine
|
|
466
|
-
|
|
467
|
-
**Chosen:** Separate generator classes per shell
|
|
468
|
-
|
|
469
|
-
**Alternative:** Template engine with shell-specific templates
|
|
470
|
-
|
|
471
|
-
**Rationale:**
|
|
472
|
-
- Shell completion syntax is fundamentally different (not just text substitution)
|
|
473
|
-
- Type safety is better with classes than templates
|
|
474
|
-
- Logic complexity (caching, dynamic completions) doesn't fit template paradigm
|
|
475
|
-
- Easier to debug and test dedicated classes
|
|
476
|
-
|
|
477
|
-
### Decision: 2-Second Cache TTL
|
|
478
|
-
|
|
479
|
-
**Chosen:** 2-second cache
|
|
480
|
-
|
|
481
|
-
**Alternatives:** No cache (slow), longer cache (stale), persistent cache (complex)
|
|
482
|
-
|
|
483
|
-
**Rationale:**
|
|
484
|
-
- Balances performance with freshness
|
|
485
|
-
- Matches typical user interaction patterns
|
|
486
|
-
- Simple implementation (no invalidation complexity)
|
|
487
|
-
- Automatic cleanup on process exit
|
|
488
|
-
|
|
489
|
-
### Decision: Oh My Zsh Detection
|
|
490
|
-
|
|
491
|
-
**Chosen:** Check `$ZSH` env var first, then `~/.oh-my-zsh/` directory
|
|
492
|
-
|
|
493
|
-
**Rationale:**
|
|
494
|
-
- `$ZSH` is set by Oh My Zsh initialization (reliable)
|
|
495
|
-
- Directory check is fallback for non-interactive scenarios
|
|
496
|
-
- Standard Zsh serves as ultimate fallback
|
|
497
|
-
|
|
498
|
-
### Decision: Installation Automation vs. Manual Instructions
|
|
499
|
-
|
|
500
|
-
**Chosen:** Automated installation with install/uninstall commands
|
|
501
|
-
|
|
502
|
-
**Alternative:** Generate script and provide manual installation instructions
|
|
503
|
-
|
|
504
|
-
**Rationale:**
|
|
505
|
-
- Better user experience (one command vs. multiple manual steps)
|
|
506
|
-
- Reduces errors from manual configuration
|
|
507
|
-
- Aligns with user expectations for modern CLI tools
|
|
508
|
-
- Still supports manual workflow via script generation to stdout
|
|
509
|
-
|
|
510
|
-
## Future Enhancements
|
|
511
|
-
|
|
512
|
-
1. **Contextual Flag Completion** - Suggest only valid flags for current command
|
|
513
|
-
2. **Fuzzy Matching** - Allow partial matching for change/spec IDs
|
|
514
|
-
3. **Rich Descriptions** - Include "why" section in completion suggestions (shell-dependent)
|
|
515
|
-
4. **Completion Stats** - Track completion usage for analytics
|
|
516
|
-
5. **Custom Completion Hooks** - Allow projects to extend completions
|
|
517
|
-
6. **MCP Integration** - Provide completions via Model Context Protocol
|
|
518
|
-
|
|
519
|
-
## References
|
|
520
|
-
|
|
521
|
-
- [Bash Programmable Completion](https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html)
|
|
522
|
-
- [Zsh Completion System](https://zsh.sourceforge.io/Doc/Release/Completion-System.html)
|
|
523
|
-
- [Fish Completions](https://fishshell.com/docs/current/completions.html)
|
|
524
|
-
- [PowerShell Argument Completers](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/register-argumentcompleter)
|
|
525
|
-
- [Oh My Zsh Custom Completions](https://github.com/ohmyzsh/ohmyzsh/wiki/Customization#adding-custom-completions)
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Add Shell Completions
|
|
2
|
-
|
|
3
|
-
## Why
|
|
4
|
-
|
|
5
|
-
OpenSpec CLI commands lack shell completion, forcing users to remember all commands, subcommands, flags, and change/spec IDs manually. This creates friction during daily use and slows developer workflows. Shell completions are a standard expectation for modern CLI tools and significantly improve user experience through:
|
|
6
|
-
- Faster command discovery via tab completion
|
|
7
|
-
- Reduced cognitive load by removing memorization requirements
|
|
8
|
-
- Fewer typos through validated suggestions
|
|
9
|
-
- Professional polish expected of production-grade tools
|
|
10
|
-
|
|
11
|
-
## What Changes
|
|
12
|
-
|
|
13
|
-
This change adds shell completion support for the OpenSpec CLI, starting with **Zsh (including Oh My Zsh)** and establishing a scalable architecture for future shells (bash, fish, PowerShell). The implementation provides:
|
|
14
|
-
|
|
15
|
-
1. **New `openspec completion` command** with Zsh generation and installation/uninstallation capabilities
|
|
16
|
-
2. **Native Zsh integration** that respects standard Zsh tab completion behavior (single-TAB menu navigation)
|
|
17
|
-
3. **Dynamic completion providers** that discover active changes and specs from the current project
|
|
18
|
-
4. **Plugin-based architecture** using TypeScript interfaces for easy extension to additional shells in future proposals
|
|
19
|
-
5. **Installation automation** for Oh My Zsh (priority) and standard Zsh configurations
|
|
20
|
-
6. **Context-aware suggestions** that only activate within OpenSpec-enabled projects
|
|
21
|
-
|
|
22
|
-
The architecture emphasizes clean TypeScript patterns, composable generators, separation of concerns between shell-specific logic and shared completion data providers, and integration with native shell completion systems. Other shells (bash, fish, PowerShell) are architecturally documented but not implemented in this proposal—they will be added in follow-up changes.
|
|
23
|
-
|
|
24
|
-
## Deltas
|
|
25
|
-
|
|
26
|
-
### Delta: New CLI completion specification
|
|
27
|
-
- **Spec:** cli-completion
|
|
28
|
-
- **Operation:** ADDED
|
|
29
|
-
- **Description:** Defines requirements for the new `openspec completion` command including generation, installation, and shell-specific behaviors for Oh My Zsh, bash, fish, and PowerShell.
|