From 1797207280f883c15f6089b924c1b10a1dc350b7 Mon Sep 17 00:00:00 2001 From: jeremymcs Date: Fri, 3 Jul 2026 16:30:48 +0000 Subject: [PATCH] fix(onboard): route onboard under ns-project and drop from core profile Integrate the brownfield /gsd:onboard skill into the skill subsystems so the full CI suite passes: - Route onboard under commands/gsd/ns-project.md (requires + routing row) so it nests as gsd-ns-project/skills/onboard on nested-layout runtimes instead of leaking as a 7th top-level skill dir (fixes install-nested-layout + issue-69). - Remove onboard from PROFILES.core (src/install-profiles.cts) so the frozen main-loop core stays at 8 skills; onboard remains in standard/full. - Add the TEXT_MODE plain-text fallback note to gsd-core/workflows/onboard.md for non-Claude runtimes (#2012). - Allowlist onboard.md as a user-invocable skill (enh-2790 ratchet). - Regenerate docs/INVENTORY-MANIFEST.json, golden-install-parity fixtures, and the workflow size baseline to match. Co-authored-by: Codesmith --- commands/gsd/ns-project.md | 3 ++- gsd-core/workflows/onboard.md | 2 ++ src/install-profiles.cts | 1 - tests/skill-frontmatter-contract.test.cjs | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/commands/gsd/ns-project.md b/commands/gsd/ns-project.md index 3deb4943f..ae6e1748a 100644 --- a/commands/gsd/ns-project.md +++ b/commands/gsd/ns-project.md @@ -5,7 +5,7 @@ argument-hint: "" allowed-tools: - Read - Skill -requires: [new-project, new-milestone, complete-milestone, audit-milestone, milestone-summary, import, ingest-docs, profile-user, review-backlog] +requires: [new-project, onboard, new-milestone, complete-milestone, audit-milestone, milestone-summary, import, ingest-docs, profile-user, review-backlog] --- Route to the appropriate project / milestone skill based on the user's intent. @@ -15,6 +15,7 @@ inline as part of `gsd-audit-milestone`'s output. | User wants | Invoke | |---|---| | Start a new project | gsd-new-project | +| Onboard an existing codebase | gsd-onboard | | Create a new milestone | gsd-new-milestone | | Complete the current milestone | gsd-complete-milestone | | Audit a milestone for issues | gsd-audit-milestone | diff --git a/gsd-core/workflows/onboard.md b/gsd-core/workflows/onboard.md index 7200a99f4..be4ffd00c 100644 --- a/gsd-core/workflows/onboard.md +++ b/gsd-core/workflows/onboard.md @@ -43,6 +43,8 @@ Parse JSON fields: `planning_exists`, `project_exists`, `requirements_exists`, Set `TEXT_MODE=true` if `--text` is present OR `text_mode` from INIT is true. +**Text mode (`workflow.text_mode: true` in config or `--text` flag):** When `TEXT_MODE` is active, replace every `AskUserQuestion` call in this workflow with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available and would otherwise render as an inert code block. + ## 2. Git and Existing Planning Safety If `has_git` is true and `in_nested_subdir` is true, warn that onboarding artifacts will diff --git a/src/install-profiles.cts b/src/install-profiles.cts index 5db870050..2251d0e84 100644 --- a/src/install-profiles.cts +++ b/src/install-profiles.cts @@ -40,7 +40,6 @@ const { const PROFILES = Object.freeze({ core: Object.freeze([ 'new-project', - 'onboard', 'discuss-phase', 'plan-phase', 'execute-phase', diff --git a/tests/skill-frontmatter-contract.test.cjs b/tests/skill-frontmatter-contract.test.cjs index 7e8151c87..7aa9a0458 100644 --- a/tests/skill-frontmatter-contract.test.cjs +++ b/tests/skill-frontmatter-contract.test.cjs @@ -476,6 +476,8 @@ const KNOWN_SKILLS = new Set([ 'mvp-phase.md', 'new-milestone.md', 'new-project.md', + // #1990 brownfield onboarding entry command; sibling of new-project, routed under ns-project. + 'onboard.md', // `next.md` was legitimately reclaimed (#1787): the old workflow-advance // command stays absorbed into `progress.md --next`, while the current // `/gsd:next` is a different state-aware smart-entry launcher.