openspec/changes/simplify-skill-installation/tasks.md
src/core/global-config.ts schema with profile, delivery, and workflows fieldscore | custom), delivery (both | skills | commands), and workflows (string array)GlobalConfig interface and defaults (profile=core, delivery=both)readGlobalConfig() to handle missing new fields with defaultssrc/core/profiles.ts with profile definitions (core, custom)CORE_WORKFLOWS constant: ['propose', 'explore', 'apply', 'archive']ALL_WORKFLOWS constant with all 11 workflowsCOMMAND_IDS constant to src/core/shared/tool-detection.ts (parallel to existing SKILL_NAMES)getProfileWorkflows(profile, customWorkflows?) resolver functionconfig profile subcommand to src/commands/config.tsopenspec update in your projects to apply."config profile core preset shortcut (preserves delivery setting)openspec config list to display profile, delivery, and workflows settings (indicate defaults vs explicit)src/core/available-tools.ts (separate from existing tool-detection.ts)getAvailableTools(projectPath) that scans for AI tool directories (.claude/, .cursor/, etc.)AI_TOOLS config to map directory names to tool IDssrc/core/templates/workflows/propose.ts.openspec.yaml via openspec new change before generating artifactssrc/core/templates/skill-templates.tsopenspec-propose to SKILL_NAMES in src/core/shared/tool-detection.tspropose to command templates in src/core/shared/skill-generation.tspropose to COMMAND_IDS in src/core/shared/tool-detection.tsgetSkillTemplates() to accept profile filter parametergetCommandTemplates() to accept profile filter parametergenerateSkillsAndCommands() in init.ts to respect delivery settinggetAvailableTools() firstmigrateIfNeeded() before profile resolution/opsx:propose prompt (only if propose is in the active profile)--profile flag to override global configsrc/commands/update.ts to read global config for profile/delivery/workflowsscanInstalledWorkflows(projectPath, tools) — scan tool directories, match only against ALL_WORKFLOWS constant, return union across toolsmigrateIfNeeded(projectPath, tools) — one-time migration logic used by both init and updateopenspec/ directory existsskills, only commands if commandsskills, remove skills if commandssrc/prompts/searchable-multi-select.ts keybindingsopenspec new change creates .openspec.yaml with schema and created fields/opsx:propose)openspec/explorations/explore-workflow-ux.md for open questions)openspec config profile picker — verify delivery toggle, workflow toggles, pre-selection of current values, core preset shortcutupdate treats profile/delivery drift as update-required even when templates are currentupdate recognizes command-only installations as configured toolsinit validates --profile values and errors on invalid overridesinit applies delivery cleanup (removes files not matching current delivery mode)